docker nacos mysql nginx 集群一台_mysql

文章目录

服务器编排

docker nacos mysql nginx 集群一台_nginx_02

ip

端口

用途

192.168.92.129

8846

nacos-cluster01

192.168.92.129

8847

nacos-cluster02

192.168.92.129

8848

nacos-cluster03

192.168.92.129

3306

mysql

192.168.92.129

80

nginx

软件

版本

用途

JDK

1.8.0_312

基础环境

docker

20.10.11

容器编排

nacos-server

1.4.2

服务发现组件和统一配置中心

nginx

1.21.4

反向代理、负载均衡、动静分离

mysql

5.7

nacos配置数据持久化

一、mysql
1. 创建挂载目录
mkdir
2. 赋予权限
chmod -R 777
3. 运行容器
  • mysql5.7
docker run --name mysql5.7 -d \
-p 3306:3306 \
-v /app/mysql/conf:/etc/my.cnf.d \
-v /app/mysql/logs:/logs \
-v /app/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart always \
--privileged=true \
  • mysql5.8

创建方式有很多种,请参考以下博客,任选其中一种即可
​​​docker mysql:8.0.27​

4. 创建数据库

创建nacos_config,

5. 初始化脚本

数据库初始化脚本:
​​​https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql​

二、nacos-cluster
  • 192.168.92.129 节点 8846
2.1. nacos-cluster01
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8846 \
-e NACOS_SERVERS=192.168.92.129:8846,192.168.92.129:8847,192.168.92.129:8848 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.92.129 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=192.168.92.129 \
-p 8846:8846 \
--name nacos8846 \
--restart always \
2.2. nacos-cluster02
  • 192.168.92.129 节点 8847
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8847 \
-e NACOS_SERVERS=192.168.92.129:8846,192.168.92.129:8847,192.168.92.129:8848 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.92.129 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=192.168.92.129 \
-p 8847:8847 \
--name nacos8847 \
--restart always \
2.3. nacos-cluster03
  • 192.168.92.129 节点 8848
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS=192.168.92.129:8846,192.168.92.129:8847,192.168.92.129:8848 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.92.129 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=192.168.92.129 \
-p 8848:8848 \
--name nacos8848 \
--restart always \
  • 配置说明:
docker run -d \ # -d表示是后台运行
-e MODE=cluster \ # 以集群模式运行
-e NACOS_APPLICATION_PORT=8846 \ # 这台Nacos服务的port是8846
-e NACOS_SERVERS=192.168.92.129:8846,192.168.92.129:8847,192.168.92.129:8848 \ # Nacos集群的所有机器的信息
-e SPRING_DATASOURCE_PLATFORM=mysql \ # 使用外置MySQL存储配置信息
-e MYSQL_SERVICE_HOST=192.168.92.129 \ # 外置MySQL的IP
-e MYSQL_SERVICE_PORT=3306 \ # 外置MySQL的port
-e MYSQL_SERVICE_USER=root \ # 外置MySQL的用户名
-e MYSQL_SERVICE_PASSWORD=123456 \ # 外置MySQL的密码
-e MYSQL_SERVICE_DB_NAME=nacos_config \ # 外置MySQL的数据库,也就是Nacos的配置文件要存储得到哪个数据库,这个在单机版Nacos使用外置数据库时候介绍过
-e NACOS_SERVER_IP=192.168.92.129 \ # 这台Nacos服务的IP
-p 8846:8846 \ # 容器外部端口映射
--name nacos8846 \ # 给容器起个名字吧
--restart always \ #重启docker容器自动启动
nacos/nacos-server:1.4.2 # 运行哪个镜像

常见坑点:官网使用的是NACOS_SERVER_PORT,对于nacos/nacos-server:1.3.2镜像,自定义Nacos端口号的时候,不要使用NACOS_SERVER_PORT,要使用NACOS_APPLICATION_PORT!因为conf/application.properties里写了。

docker nacos mysql nginx 集群一台_nginx_03

三、nginx

由Nginx进行转发(nginx下部署了3台Nacos集群)配置文件自行修改

  • 192.168.92.129节点
3.1. 运行临时容器

-目的,为了复制nginx容器内部的配置文件

mkdir /app/nginx/conf/ /app/nginx/dist -p
chmod 777 /app/nginx -R
docker run \
-d \
--name nginx-tmp \
-p 80:80 \
3.2. 配置拷贝
docker cp nginx-tmp:/etc/nginx/conf.d/default.conf /app/nginx/conf/default.conf
docker cp
3.3. 删除临时容器
docker rm
3.4. 添加配置

在/app/nginx/conf/挂载目录下新建 ​​nacos.conf​

cd /app/nginx/conf/
vim

添加以下内容:

upstream nacos {
server 192.168.92.129:8845 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.92.129:8846 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.92.129:8847 weight=1 max_fails=2 fail_timeout=10s;
}

server{
listen 8848;
server_name 192.168.92.129;
location / {
proxy_pass http://nacos;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
}
}
3.5. 运行容器

这是在咱们生产真正的nginx容器

docker run \
-d \
--name nginx \
-p 80:80 \
-v /app/nginx/dist:/usr/share/nginx/html:ro \
-v /app/nginx/conf:/etc/nginx/conf.d \
--privileged=true \
--restart always \
四、验证和实战
4.1. nacos控制台

分别访问:默认账号:nacos 默认密码:nacos
​​​http://192.168.92.129:8846/nacos​​​​http://192.168.92.129:8847/nacos​​​​http://192.168.92.129:8848/nacos​

docker nacos mysql nginx 集群一台_docker_04

4.2. nginx验证

这是nginx端口是80

​http://192.168.92.129/nacos/​

docker nacos mysql nginx 集群一台_mysql_05

4.3. 项目配置
server:
port: 8000
spring:
cloud:
nacos:
discovery:
service: order2-serv
server-addr: 192.168.92.129:80