首先我们先来看看架构图:
顺序从上面往下面搭建:
1 第一层:Nginx反向代理集群
首先布置两台虚拟机:
- 172.20.17.41:8001
- 172.20.17.42:8001
1.1 Docker下载nginx
docker pull nginx:1.21.1
1.1.1 运行nginx
可以参考我下面的博客:
https://blog.csdn.net/zuodingquan666/article/details/119332705
1.2.1 下载并配置keepalived
keepalived是一款用于监控的工具,我们可以用来监控nginx的运行状态,nginx集群里面每台keepalived监控一台nginx,如果有一个nginx宕机,那么keepalived同时关闭,其他的keepalived就会承担虚拟端口接收和分发给nginx
yum install keepalived
修改keepalived的配置文件keepalived.conf :
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.20.17.41 #部署的主机ip
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#可有可无
vrrp_script chk_http_port {
script "/usr/local/killkeepalived.sh"
interval 2 #(检测脚本执行的间隔)
weight 200
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 //网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.20.17.20 // VRRP H 虚拟地址
}
}
1.2.1 运行监控nginx运行的脚本
自己编写的监控nginx运行的脚本,原理就是监控到nginx停止就停止keepalived,让该台nginx退出集群。
shell脚本存放的位置:
/root/shell/startd.sh
脚本代码:
#!/bin/bash
systemctl start keepalived.service
docker start nginx10
docker ps
systemctl status keepalived.service
while [ 1 -eq 1 ]
do
sleep 2
if [ “你自己的容器id” == $(docker ps -q --filter "name=你自己的nginx容器名") ]
then
echo "nginx10正在运行"
else
killall keepalived
echo "即将退出"
break
fi
done
这个脚本就不过多解释了,不懂得直接复制,然后
chmod 777 startd.sh
./stratd.sh
就好了
以上配置两台服务器都配置一份就好了。
进行了以上两份配置后,我们目前的系统架构如下:
2.配置Nacos集群
首先下载好nacos,这里不推荐用Docker,直接下tar包就好
2.1 安装Nacos
我们下载到/root 目录下,解压到/opt/nacos目录下
tar -zxvf nacos-server-2.0.3.tar.gz -C /opt/nacos
目录如下:
我们来看看目录结构:
目录解析:
#bin 这个是启动和关闭nacos的
#conf nacos的配置文件都在里面
#data nacos存放的数据
#logs 启动等行为生产出来的数据
2.2 配置数据库
不懂得可以去看看AP和CP
我们编辑: application.properties
在最后面添加以下配置:
#########################databasic######################
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://8.129.116.23:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
数据库配置也可以在指定的地址配置,都可以。
2.3 配置Nacos集群
先将 cluster.conf.example cp出来
cp cluster.conf.example cluster.conf
然后进入,先将原来存在的数据清除,写入我们要配置的三台Nacos的IP地址
172.20.17.11:8848
172.20.17.12:8848
172.20.17.13:8848
就好了
以上在172.20.17.11:8848、172.20.17.12:8848、172.20.17.13:8848三台主机都要配置一遍
2.4 启动Ncaos
在bin目录下:
./startup.sh -p embedded
怎么说呢,在这里不得不说Nacos是真TM占内存,我1GB的内存,启动了3分钟,有兴趣的把JVM调优一下吧。
2.5 查看启动信息
cat /opt/nacos/logs/start.out
当出现下面这行字时,就代表启动成功了
目前这一层就已经配好了
3. 配置反向代理
我们最后一步,就是配置这里:
这里主要配置nginx
因为时docker下载的nginx,有些小伙伴或许挂载了文件在主机上,还有的没有挂载,也许有的朋友都没用Docker。
这边统一说是:nginx.conf
然后再server中:
4.启动集群
顺序:
先启动Nginx集群,在启动Nacos集群
当我访问虚拟IP:172.20.17.20:8001/nacos时:
成功访问。
我们进去看看集群怎么样:
各个节点都很健康
注:以上省略了jdk和mysql的安装