在docker环境下搭建nacos集群-创新互联
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
端口 | 与主端口偏移量 | 描述 |
---|---|---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端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://myzitong.com/article/doisoh.html