Docker搭建Nacos集群

333 阅读2分钟

上图是Nacos集群理想中的高可用部署方式。

以前写过一篇非Docker环境搭建Nacos集群的文章 Nacos高可用「集群部署」

准备工作

创建数据库

新建数据库 nacos_db, 运行sql脚本,创建表。

github.com/alibaba/nac…

搭建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

参数含义

NameDescriptionOption
PREFER_HOST_MODE是否支持hostnamehostname/ip default ip
MODEcluster模式/standalone模式cluster/standalone default cluster
NACOS_SERVERSnacos cluster地址eg. ip1,ip2,ip3
SPRING_DATASOURCE_PLATFORMstandalone 支持 mysqlmysql / empty default empty
MYSQL_SERVICE_HOSTmysql 主节点host
MYSQL_SERVICE_PORTmysql 主节点端口default : 3306
MYSQL_SERVICE_DB_NAMEmysql 主节点数据库
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