上图是Nacos集群理想中的高可用部署方式。
以前写过一篇非Docker环境搭建Nacos集群的文章 Nacos高可用「集群部署」
准备工作
创建数据库
新建数据库 nacos_db, 运行sql脚本,创建表。
搭建Nacos集群
下面以在两个Node,分别启动一个Nacos容器为例:
拉取镜像
在两台机器上拉取Nacos镜像
docker pull nacos/nacos-server
启动容器
--network host : 容器使用宿主机的IP和端口
# 在110机器运行容器
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.1.110:8848 192.168.1.111:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=xxxx \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_test \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
--network host \
--name nacos-110 \
--restart=always \
# 在111机器运行容器
nacos/nacos-server
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.1.110:8848 192.168.1.111:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=xxxx \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_test \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
--network host \
--name nacos-111 \
--restart=always \
nacos/nacos-server
参数含义
| Name | Description | Option |
|---|---|---|
| PREFER_HOST_MODE | 是否支持hostname | hostname/ip default ip |
| MODE | cluster模式/standalone模式 | cluster/standalone default cluster |
| NACOS_SERVERS | nacos cluster地址 | eg. ip1,ip2,ip3 |
| SPRING_DATASOURCE_PLATFORM | standalone 支持 mysql | mysql / empty default empty |
| MYSQL_SERVICE_HOST | mysql 主节点host | |
| MYSQL_SERVICE_PORT | mysql 主节点端口 | default : 3306 |
| MYSQL_SERVICE_DB_NAME | mysql 主节点数据库 | |
| MYSQL_SERVICE_USER | 数据库用户名 | |
| MYSQL_SERVICE_PASSWORD | 数据库密码 |
测试验证
持久化至Mysql没问题。
Docker安装Nginx
下面以单机Nginx配置转发代理为例,和以前普通部署一样。
# 1.先拉取nginx镜像
docker pull nginx
# 2、查看是否拉取成功
docker images
# 3、使用命令在源主机上新建文件夹
mkdir -p /root/nginx/{conf,html,log}
# 4、启动临时nginx
docker run -d --name nginx nginx
# 5、拷贝需要挂载的文件
docker cp nginx:/etc/nginx/conf.d /root/nginx/conf
docker cp nginx:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
docker cp nginx:/usr/share/nginx/html/index.html /root/nginx/html/index.html
# 6、删除临时nginx
docker rm -f nginx
# 7、创建挂载的nginx
docker run -d --network host --name nginx \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/html/index.html:/usr/share/nginx/html/index.html \
-v /root/nginx/log:/var/log/nginx \
nginx
编辑nginx.config (/root/nginx/conf/nginx.conf)
upstream nacos{
server 192.168.1.110:8848;
server 192.168.1.111:8848;
}
server {
listen 1080;
server_name 192.168.1.110;
location / {
proxy_pass http://nacos;
}
}
# 删除最后默认配置信息 include /etc/nginx/conf.d/*.conf;
访问:http://192.168.1.110:1080/nacos