-
架构图
目录
一、基本准备
虚拟机操作系统:CentOS Linux 7.9 x86_64
- 虚拟机3台(奈何囊中羞涩)
- Nacos_MySQL的虚拟机 1核 3G
- 其他两台Nginx的 1核1G
- 软件版本
-
keepalived keepalived-1.3.5-19.el7.x86_64 (yum安装)
-
Nginx 1.20.1 (yum安装)
-
Nacos 1.1.4
github下载
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz
百度网盘
-
MySQL 5.7.36(自行安装,我使用的docker安装的,个人测试用)
二、Nacos集群部署
虚拟机IP:192.168.0.110
将nacos-server-1.1.4.tar.gz上传到虚拟机
1.解压缩
tar -zxvf nacos-server-1.1.4.tar.gz
2.移动
mkdir -p /usr/local/mynacos && mv nacos /usr/local/mynacos/
3. 创建数据库并执行SQL
CREATE DATABASE nacos_config;
cd /usr/local/mynacos/nacos/conf
使用mysql-cli source命令或者通过Navicat、SQLyog等工具将nacos-mysql.sql在 nacos-config 数据库执行。
4.修改application.properties
- 建议:修改前先备份
cd /usr/local/mynacos/nacos/conf
cp -r application.properties application.properties.bak
vim application.properties
在文件最后添加db信息
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
5.配置集群节点node
cd /usr/local/mynacos/nacos/conf
cp -r cluster.conf.example cluster.conf
vim cluster.conf
清空文件中的内容,并填入一下内容(以你自己的IP为准)
192.168.0.110:3333
192.168.0.110:4444
192.168.0.110:5555
6.修改启动脚本
cd /usr/local/mynacos/nacos/bin
cp -r startup.sh startup.sh.bak
vim startup.sh
添加脚本启动指定的参数-p端口
while getopts ":m:f:s:p:" opt
p)
PORT=$OPTARG;;
shift+g 到文件最后
-Dserver.port=${PORT}
另外,如果当前机器内存较小的话,需要修改服务的启动内存和最大内存
搜索启动内存参数设置(注:nacos-server-1.4.4为2g,其他版本的未测试)
/2g
# 或者使用替换命令
:%s/2g/256m/g
我这里全部设置为256m
-Xms256m -Xmx256m -Xmn256m
保存退出。
7.复制nacos文件夹
cp -r nacos/ nacos02
cp -r nacos/ nacos03
8.启动
/usr/local/mynacos/nacos/bin/startup.sh -p 3333
tail -f /usr/local/mynacos/nacos/logs/start.out
启动其他两个节点
/usr/local/mynacos/nacos02/bin/startup.sh -p 4444
/usr/local/mynacos/nacos03/bin/startup.sh -p 5555
等待启动,使用netstat 命令查看端口
netstat -ntpl
到这步,如果出错,请查看每个节点的启动日志以及nacos.log
tail -f /usr/local/mynacos/${不同nacos节点目录}/logs/start.out
tail -f /usr/local/mynacos/${不同nacos节点目录}/logs/nacos.log
内存不够也会导致无法启动,适当调节虚拟机内存或者修改启动内存参数。
没有任何问题,这台机器先放到这。
三、Nginx安装
Nginx-masterIP:192.168.0.111
3.1 Nginx-master安装
1.yum安装Nginx
yum -y install nginx
如果没有,需要安装epel包
yum -y install epel-release
yum -y install nginx
2.修改nginx.conf配置文件
cd /etc/nginx/
cp -r nginx.conf nginx.conf.bak
vim nginx.conf
由于目前仅测试,所以没有创建nginx用户,建议注释,有可能报403;
添加upstream nacoscluster 不要加下划线
upstream nacoscluster {
server 192.168.0.110:3333;
server 192.168.0.110:4444;
server 192.168.0.110:5555;
}
添加location
location / {
proxy_pass http://nacoscluster;
}
保存退出
3.启动nginx
nginx
4.访问测试
默认用户名:nacos
默认密码:nacos
添加一个配置文件测试
查看数据库
3.2 Nginx-slave安装
Nginx-slaveIP: 192.168.0.112
Nginx-slave安装与Nginx-master安装配置方式相同,此处不再赘述。
1.访问测试(从机)
四、Keepalived安装
借鉴博客
Nginx的高可用集群_nginx集群_梁萌的博客-CSDN博客
在两台Nginx虚拟机上执行
yum -y install keepalived
4.1 Nginx-master配置
cd /etc/keepalived/
cp -r keepalived.conf keepalived.conf.bak
vim keepalived.conf
- smtp_server 192.168.0.111 本机ip
- script "/usr/local/src/nginx_check.sh" nginx检查脚本
touch /usr/local/src/nginx_check.sh
chmod +x /usr/local/src/nginx_check.sh
# nginx_check.sh 内容
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/sbin/nginx # 注意这里需要换成nginx可执行文件的路径,源码包安装的nginx需要修改。
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
- state MASTER 标识为主机
- interface ens33 网卡,如果是 eth0 就写 eth0
virtual_ipaddress {
192.168.0.115/24 虚拟ip,建议加上prefix
}
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.0.111
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.115/24
}
}
4.2 Nginx-slave配置
cd /etc/keepalived/
cp -r keepalived.conf keepalived.conf.bak
vim keepalived.conf
- smtp_server 192.168.0.112 本机ip
- script "/usr/local/src/nginx_check.sh" nginx检查脚本
touch /usr/local/src/nginx_check.sh
chmod +x /usr/local/src/nginx_check.sh
# nginx_check.sh 内容
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/sbin/nginx # 注意这里需要换成nginx可执行文件的路径,源码包安装的nginx需要修改。
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
- state BACKUP 标识为备用机
- interface ens33 网卡,如果是 eth0 就写 eth0
virtual_ipaddress {
192.168.0.115/24 虚拟ip,建议加上prefix
}
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.0.112
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.115/24
}
}
4.3 启动Nginx和keepalived
# 主机
nginx
# 从机
nginx
#主机
systemctl start keepalived
#从机
systemctl start keepalived
在Nginx-master上查看ip
ip a
监听两个nginx的access.log文件
tail -f /var/log/nginx/access.log
使用虚拟IP访问测试
发现日志只走了Nginx-master
将Nginx-master的nginx、keepalived服务停止
pkill -9 nginx
systemctl stop keepalived
再次访问,发现请求到从机了。
五、服务注册测试
1.编辑application.yml
2.查看服务注册状态
至此,keepalived+nginx+nacos+mysql,部署高可用nacos完成。
结语
其中很多部分也不是很懂,基本都是在百度上找的,但是最终确实实现了想要的效果(自我感觉)。
还有就是用高版本的nacos会报错,而且每个版本还都报不一样的错,可能还是哪里没配置太对。
但至少有一个版本可以跑通了 :)
希望可以帮到你!
原文地址:https://blog.csdn.net/Controller000/article/details/129692213
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。