189 8069 5689

在docker环境下搭建nacos集群-创新互联

在Docker 环境下搭建Nacos 2.x 集群

Nacos集群调用是用Nginx做反向代理的。

创新互联是一家专业提供城步企业网站建设,专注与做网站、成都网站建设html5、小程序制作等业务。10年已为城步众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

对于搭建过程有好多教程文档,可自行查漏补缺,本篇就我自己操作过程中出现问题点做个备忘.
1.首先创建docker network

docker network create --subnet=172.186.18.0/16 nacos-net

2.Docker 启动MySQL 创建数据库名 nacos-config 导入sql文件

docker run -itd -p 3306:3306  --name mysql-master --nacos-net --ip 172.186.18.40 --privileged=true  --restart=always -e MYSQL_ROOT_PASSWORD=123456  -e TZ=Asia/Shanghai mysql

3.创建三个Nacos v2.1.2容器

第一个Nacos容器 nacos01
docker run -itd -e PREFER_HOST_MODE=ip -e MODE=cluster -e NACOS_SERVERS="172.186.18.41:8848 172.186.18.42:8848 172.186.18.43:8848" -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=172.186.18.40 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=nacos-config -e MYSQL_SERVICE_USER=root  -e MYSQL_SERVICE_PASSWORD=123456 -p 18848:8848 -p 19848:9848 -p 19849:9849 --name nacos01 --net nacos-net --ip 172.186.18.41 --restart=always nacos/nacos-server:v2.1.2
第二个Nacos容器 nacos02
docker run -itd -e PREFER_HOST_MODE=ip -e MODE=cluster -e NACOS_SERVERS="172.186.18.41:8848 172.186.18.42:8848 172.186.18.43:8848" -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=172.186.18.40 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=nacos-config -e MYSQL_SERVICE_USER=root  -e MYSQL_SERVICE_PASSWORD=123456 -p 16848:8848 -p 17848:9848 -p 17849:9849 --name nacos02 --net nacos-net --ip 172.186.18.42 --restart=always nacos/nacos-server:v2.1.2
第三个Nacos容器 nacos03
docker run -itd -e PREFER_HOST_MODE=ip -e MODE=cluster -e NACOS_SERVERS="172.186.18.41:8848 172.186.18.42:8848 172.186.18.43:8848" -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=172.186.18.40 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=nacos-config -e MYSQL_SERVICE_USER=root  -e MYSQL_SERVICE_PASSWORD=123456 -p 14848:8848 -p 15848:9848 -p 15849:9849 --name nacos03 --net nacos-net --ip 172.186.18.43 --restart=always nacos/nacos-server:v2.1.2

4.Docker运行Nginx 代理Nacos集群

为了方便,将docker Nginx里 /etc/nginx/ 全部挂载出来

docker run -itd --name nacos-nginx --net nacos-net -v /home/nacos/nginx/:/etc/nginx/ -p 8848:8848 -p 9848:9848 nginx

划重点 为什么要多加一个-p 9848:9848这是一个坑点
在/etc/nginx/conf.d 文件夹下添加 default.conf 配置文件内容为:

upstream lb-nocos {server nacos01:8848 weight=1;
		server nacos02:8848 weight=1;
		server nacos03:8848 weight=1;
	}
	server {listen  8848;
		server_name  localhost;
		location / {	root   /usr/share/nginx/html;
			index  index.html index.htm;
		}
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {	root   /usr/share/nginx/html;
		}
		location /nacos {	 # 反向代理
			proxy_pass http://lb-nocos;
		}
	}

至此如果访问Nginx代理的Nacos地址会发现Nacos已经显示有三个节点,但是只限看看,配置到项目里还是会启动失败或注册不到。
这里补充上边的坑点
Nacos2.x 版本新增了gRPC的的通信方式,所以Nginx还要代理gRPC的端口, 这个新增的端口是在主端口(8848)基础上,进行偏移量自动生成的,也就是假如主端口是8848, 那么按默认规则就是 8848+1000=9848, 还有一个是8848+1001=9849

端口与主端口偏移量描述
98481000客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
98491001服务端gRPC请求服务端端口,用于服务间同步

因此在Nginx中,还要代理Nacos的9848端口,注意nginx.conf文件里添加入代理gRPC部分, 与http 部分平级添加。

#这里是http代理部分为了比较放在这里
# http {# }
# Nacos的gRPC协议配置
stream {   # 负载均衡配置(TCP长连接配置)
       upstream lb-nocos-tcp{ server nacos01:9848 weight=1;
         server nacos02:9848 weight=1;
         server nacos03:9848 weight=1;
       }

       server {  listen 9848;
          proxy_pass lb-nocos-tcp;
       }
}

Nacos界面: http://docker宿主机IP:8848/nacos
在项目配置文件中server-addr=docker宿主机IP:8848,这样项目就能正常使用Nginx代理的Nacos集群了 ,一点按钮 咦!服务注册到Nacos集群中了.
我操作的过程中就是没有代理gRPC端口,因此项目没有启动成功。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:在docker环境下搭建nacos集群-创新互联
文章分享:http://cdxtjz.cn/article/doisoh.html

其他资讯