文章目录
- 服务器编排
- 一、mysql
- 1. 创建挂载目录
- 2. 赋予权限
- 3. 运行容器
- 4. 创建数据库
- 5. 初始化脚本
- 二、nacos-cluster
- 2.1. nacos-cluster01
- 2.2. nacos-cluster02
- 2.3. nacos-cluster03
- 三、nginx
- 3.1. 运行临时容器
- 3.2. 配置拷贝
- 3.3. 删除临时容器
- 3.4. 添加配置
- 3.5. 运行容器
- 四、验证和实战
- 4.1. nacos控制台
- 4.2. nginx验证
- 4.3. 项目配置
服务器编排
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 -p /app/mysql/data /app/mysql/conf /app/mysql/sql
2. 赋予权限
chmod -R 777 /app/mysql/
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 \
mysql:5.7
- 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 \
nacos/nacos-server:1.4.2
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 \
nacos/nacos-server:1.4.2
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 \
nacos/nacos-server:1.4.2
- 配置说明:
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里写了。
三、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 \
nginx:1.21.4
3.2. 配置拷贝
docker cp nginx-tmp:/etc/nginx/conf.d/default.conf /app/nginx/conf/default.conf
docker cp nginx-tmp:/usr/share/nginx/html/index.html /app/nginx/dist/index.html
3.3. 删除临时容器
docker rm -f nginx-tmp
3.4. 添加配置
在/app/nginx/conf/挂载目录下新建 nacos.conf
cd /app/nginx/conf/
vim nacos.conf
添加以下内容:
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 \
nginx:1.21.4
四、验证和实战
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
4.2. nginx验证
这是nginx端口是80
http://192.168.92.129/nacos/
4.3. 项目配置
server:port: 8000
spring:cloud:nacos:discovery:service: order2-servserver-addr: 192.168.92.129:80