1. 问题描述
提供者的负载均衡,用了Ribbon和OpenFeign 2种方式,但是这两种方式都是通过微服务名称调用的,也就是说需要依赖我们的注册中心,如果注册中心挂了,很显然负载均衡做的再好 也没有什么卵用,所以注册中心的集群时必须要做的,我们会发现,在微服务架构中 不允许单机版的存在,几乎所有的服务都要做集群
2. nacos的集群搭建
单机模式 - 用于测试和单机试用。
集群模式 - 用于生产环境,确保高可用(掌握)
多集群模式 - 用于多数据中心场景。
2.1. 上传nacos包
## 新建nacos文件夹
mkdir /opt/nacos -p
## 进入目录
cd /opt/nacos
## rz指令上传包
rz+回车
## ls指令查看
ls
2.2. 解压
## 解压
tar -zxvf nacos-server-1.3.0.tar.gz
2.3. 新建数据库
nacos 把数据默认存在了derby数据库,每一个nacos都自带这么一个数据库,那么如果是集群搭建的话,数据要共享,多个nacos要共享一个数据库才行,不能谁使用谁的,所以我们让多个nacos都使用同一个mysql,所以我们要新建数据库
2.4. 执行sql语句
在解压目录nacos下面的目录conf中有一个sql文件 名字是:nacos-mysql.sql
2.5. 修改nacos的数据库连接
修改解压目录nacos下面的目录conf中的application.properties
添加内容如下:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.32.128:3306/nacos_data?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=rootroot
2.6. 修改nacos的运行内存(官网设置内存太高)
修改解压目录nacos下面的bin目录下的startup.sh
修改如下:
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn64m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=90m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
2.7. 克隆出来2台机器
2.8. 集群配置
三台机器都要这样配置
2.8.1. 找到配置文件
2.8.2. 重命名
mv cluster.conf.example cluster.conf
2.8.3. 添加配置
2.8.4. 开放端口
## 开放端口 或者关闭防火墙
firewall-cmd --zone=public --add-port=8848/tcp --permanent
## 开放端口之后 需要重新启动防火墙
systemctl restart firewalld.service
2.8.4. 修改后分别启动
2.8.5. 浏览器访问
2.9. 集群的使用
2.9.1. 问题描述
2.9.2. 官方说明
2.9.3. 修改ngnix的配置文件
upstream huige {
server 192.168.32.128:8848;
server 192.168.32.129:8848;
server 192.168.32.130:8848;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://huige;
}
2.9.4. 提供者修改
2.9.5. 消费者修改
2.9.6. 控制台查看
2.9.7. 远程测试测试