文章目录
-
- 1.基本介绍
- 2.启动主Nginx和两个Tomcat
-
-
- 1.启动linux的tomcat
- 2.启动win的tomcat
- [3.启动主Nginx,进入安装目录 `./sbin/nginx -c nginx.conf`](#3.启动主Nginx,进入安装目录
./sbin/nginx -c nginx.conf
) - [4.windows访问 http://look.sunxiansheng.cn:7777/search/cal.jsp](#4.windows访问 http://look.sunxiansheng.cn:7777/search/cal.jsp)
-
- 3.配置从Nginx
-
-
- 1.将主虚拟机复制一份作为从虚拟机
- 2.打开从虚拟机测试
- 3.保证新虚拟机的ip和win在同一网段
-
- [1.查看新虚拟机ip `ifconfig`](#1.查看新虚拟机ip
ifconfig
) - [2.查看win的ip `ipconfig`](#2.查看win的ip
ipconfig
) - 3.互相ping一下保证网络通畅
- [1.查看新虚拟机ip `ifconfig`](#1.查看新虚拟机ip
- 4.保证两台虚拟机之间可以ping通
- 5.Xshell远程登录两个虚拟机
- [6.配置域名解析到 192.168.200.129](#6.配置域名解析到 192.168.200.129)
- 7.修改nginx.conf(修改主机名即可)
- 8.测试从nginx访问
-
- 1.启动win的tomcat
- 2.启动linux的tomcat
- [3.启动从Nginx,进入安装目录 `./sbin/nginx -c nginx.conf`](#3.启动从Nginx,进入安装目录
./sbin/nginx -c nginx.conf
) - [4.win测试访问 http://look2.sunxiansheng.cn:7777/search/cal.jsp](#4.win测试访问 http://look2.sunxiansheng.cn:7777/search/cal.jsp)
- 9.综合测试
-
- 1.由于看不出来结果的区别
- 2.重启win的tomcat
- [3.win访问主Nginx http://look.sunxiansheng.cn:7777/search/cal.jsp](#3.win访问主Nginx http://look.sunxiansheng.cn:7777/search/cal.jsp)
- [4.win访问从Nginx http://look2.sunxiansheng.cn:7777/search/cal.jsp](#4.win访问从Nginx http://look2.sunxiansheng.cn:7777/search/cal.jsp)
-
- 4.在两台linux主机下载keepalived(这里只演示一个)
-
-
- 1.将文件上传到`/opt`目录下
- [2.在`/opt`下创建目录 /keepalived `mkdir /opt/keepalived`](#2.在
/opt
下创建目录 /keepalivedmkdir /opt/keepalived
) - [3.进入`/opt`目录,然后将文件解压到刚才创建的目录 `cd /opt/` `tar -zxvf keepalived-2.0.20.tar.gz -C ./keepalived`](#3.进入
/opt
目录,然后将文件解压到刚才创建的目录cd /opt/
tar -zxvf keepalived-2.0.20.tar.gz -C ./keepalived
) - [4.进入解压到的文件夹下 `cd /opt/keepalived/keepalived-2.0.20`](#4.进入解压到的文件夹下
cd /opt/keepalived/keepalived-2.0.20
) - [5. 配置文件放到/etc下,安装到/usr/local下这样启动的指令就在/usr/local/sbin目录下 `./configure --sysconf=/etc --prefix=/usr/local`](#5. 配置文件放到/etc下,安装到/usr/local下这样启动的指令就在/usr/local/sbin目录下
./configure --sysconf=/etc --prefix=/usr/local
) - [6.安装 `make && make install`](#6.安装
make && make install
) - 7.如果安装成功,检查配置目录和启动指令
- 8.在另一台linux主机也安装一下!!!
-
- 5.完成高可用集群配置
-
-
- 1.配置主Nginx
-
- [编辑keepalived.conf的配置文件 `vim /etc/keepalived/keepalived.conf`](#编辑keepalived.conf的配置文件
vim /etc/keepalived/keepalived.conf
)
- [编辑keepalived.conf的配置文件 `vim /etc/keepalived/keepalived.conf`](#编辑keepalived.conf的配置文件
- 2.配置从Nginx
-
- [编辑keepalived.conf的配置文件 `vim /etc/keepalived/keepalived.conf`](#编辑keepalived.conf的配置文件
vim /etc/keepalived/keepalived.conf
)
- [编辑keepalived.conf的配置文件 `vim /etc/keepalived/keepalived.conf`](#编辑keepalived.conf的配置文件
- 3.测试
-
- [1.启动 两个keepalived `/usr/local/sbin/keepalived`](#1.启动 两个keepalived
/usr/local/sbin/keepalived
) - [2.输入 ip a,看到配置的虚拟ip即成功](#2.输入 ip a,看到配置的虚拟ip即成功)
- 3.使用windows来ping这个虚拟ip,如果能ping通则说明可用
- 4.如果没有ping通,就是配置文件的vrrp_strict没注销
-
- 1.注销vrrp_strict
- [2.关闭keepalived `killall keepalived` 或者 `kill -9 进程号`](#2.关闭keepalived
killall keepalived
或者kill -9 进程号
) - [3.再次启动 `/usr/local/sbin/keepalived`](#3.再次启动
/usr/local/sbin/keepalived
)
- [1.启动 两个keepalived `/usr/local/sbin/keepalived`](#1.启动 两个keepalived
- 4.总体测试
-
- [1.win访问 http://192.168.200.18:7777/search/cal.jsp 会一直访问win和主Nginx](#1.win访问 http://192.168.200.18:7777/search/cal.jsp 会一直访问win和主Nginx)
- 2.关闭主的keepalived来模拟主Nginx挂掉
- [3.win再次访问 http://192.168.200.18:7777/search/cal.jsp](#3.win再次访问 http://192.168.200.18:7777/search/cal.jsp)
-
- [6.编写自动检测Nginx异常脚本kill keepalived](#6.编写自动检测Nginx异常脚本kill keepalived)
-
-
- [1.进入keeplived配置文件目录 `cd /etc/keepalived/`](#1.进入keeplived配置文件目录
cd /etc/keepalived/
) - [2.编写shell脚本 `vim ch_nginx.sh`](#2.编写shell脚本
vim ch_nginx.sh
) - [3.为该脚本增加执行权限 `chmod 755 ch_nginx.sh`](#3.为该脚本增加执行权限
chmod 755 ch_nginx.sh
) - [4.编写配置文件 `vim /etc/keepalived/keepalived.conf`](#4.编写配置文件
vim /etc/keepalived/keepalived.conf
) - [5.重启主Nginx所在的keepalived `killall keepalived && /usr/local/sbin/keepalived`](#5.重启主Nginx所在的keepalived
killall keepalived && /usr/local/sbin/keepalived
) - 6.测试
-
- [1.关闭主nginx `./sbin/nginx -s stop`](#1.关闭主nginx
./sbin/nginx -s stop
) - [2.浏览器访问 http://192.168.200.18:7777/search/cal.jsp](#2.浏览器访问 http://192.168.200.18:7777/search/cal.jsp)
- [1.关闭主nginx `./sbin/nginx -s stop`](#1.关闭主nginx
- 7.注意事项和细节
-
- 1.注意事项
- [2.keepalived.conf 详解](#2.keepalived.conf 详解)
- [1.进入keeplived配置文件目录 `cd /etc/keepalived/`](#1.进入keeplived配置文件目录
-
1.基本介绍
1.在微服务架构中的位置
![](https://file.jishuzhan.net/article/1787319845168091137/2a2e11ad383599849e5cd8f8ce28c7a5.webp)
2.配置前提
![](https://file.jishuzhan.net/article/1787319845168091137/5e33f53e808de3a4663f4ff1755cfa64.webp)
3.主从模式架构图
- 注意:这里由于tomcat1在主Nginx上,一旦主Nginx崩溃,则这个tomcat就不可用,所以才需要在从Nginx也搭建一份,如果部署在独立主机上就不需要,就像这个tomcat2
2.启动主Nginx和两个Tomcat
1.启动linux的tomcat
![](https://file.jishuzhan.net/article/1787319845168091137/40c072de5dc35fa9a9715a4f2691f9a0.webp)
2.启动win的tomcat
![](https://file.jishuzhan.net/article/1787319845168091137/b299a3a86f18e69fe2e41f72d41731c5.webp)
3.启动主Nginx,进入安装目录 ./sbin/nginx -c nginx.conf
4.windows访问 http://look.sunxiansheng.cn:7777/search/cal.jsp
![](https://file.jishuzhan.net/article/1787319845168091137/38189ba1e920a2dcd075bc8239af9fb0.webp)
3.配置从Nginx
1.将主虚拟机复制一份作为从虚拟机
![](https://file.jishuzhan.net/article/1787319845168091137/27437d8771217c48e481d4b75ac316b0.webp)
2.打开从虚拟机测试
![](https://file.jishuzhan.net/article/1787319845168091137/bb56858115bc849b39f6ea36e885dd2b.webp)
3.保证新虚拟机的ip和win在同一网段
1.查看新虚拟机ip ifconfig
![](https://file.jishuzhan.net/article/1787319845168091137/223c2812d3ee171c5b83822704249e42.webp)
2.查看win的ip ipconfig
![](https://file.jishuzhan.net/article/1787319845168091137/71aab63815220364bc1d1c25f47dc563.webp)
3.互相ping一下保证网络通畅
![](https://file.jishuzhan.net/article/1787319845168091137/7625705ace5aecc3848d1a2c41981fa8.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/d40a68056d466dd64fe280164c44c1fb.webp)
4.保证两台虚拟机之间可以ping通
![](https://file.jishuzhan.net/article/1787319845168091137/f6f2ddfd7e25dbf93361c0383f699c85.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/4a37a71f987bd172528899b6215c8dd8.webp)
5.Xshell远程登录两个虚拟机
![](https://file.jishuzhan.net/article/1787319845168091137/2a5dc2fc7bd9260a8d5a9e2eba4dd168.webp)
6.配置域名解析到 192.168.200.129
![](https://file.jishuzhan.net/article/1787319845168091137/75dcea51f66f2cff46ea979f7ae37b37.webp)
7.修改nginx.conf(修改主机名即可)
1.http全局块
![](https://file.jishuzhan.net/article/1787319845168091137/459bb9bcd2783e3c81f1b97f2bb7ea6b.webp)
2.server块
![](https://file.jishuzhan.net/article/1787319845168091137/4fb00e8f74d2921b0c1231c999a19aa5.webp)
8.测试从nginx访问
1.启动win的tomcat
2.启动linux的tomcat
![](https://file.jishuzhan.net/article/1787319845168091137/5dbf601678e99181f7b0808759595dc2.webp)
3.启动从Nginx,进入安装目录 ./sbin/nginx -c nginx.conf
4.win测试访问 http://look2.sunxiansheng.cn:7777/search/cal.jsp
![](https://file.jishuzhan.net/article/1787319845168091137/73c24ec912c11281a1bdf4bc39763aa4.webp)
9.综合测试
1.由于看不出来结果的区别
1.修改win的tomcat中cal.jsp的内容
![](https://file.jishuzhan.net/article/1787319845168091137/1011fb6d7337be99a73dd9d038e7bc6f.webp)
2.修改主从Nginx中的tomcat中的cal.jsp文件然后重启tomcat
![](https://file.jishuzhan.net/article/1787319845168091137/bfc5970468c41c4e262b4115fe6d8f7a.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/d6c333c74995b5da7bffc3a796c478f8.webp)
2.重启win的tomcat
3.win访问主Nginx http://look.sunxiansheng.cn:7777/search/cal.jsp
)
![](https://file.jishuzhan.net/article/1787319845168091137/f71754bf4ac04e82d50f00e20bfc5f7b.webp)
4.win访问从Nginx http://look2.sunxiansheng.cn:7777/search/cal.jsp
![](https://file.jishuzhan.net/article/1787319845168091137/3c0403be12f08bfa0e019e9160b4fd68.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/73d82f8d1acf6467b8fd47615f845e2a.webp)
4.在两台linux主机下载keepalived(这里只演示一个)
1.将文件上传到/opt
目录下
![](https://file.jishuzhan.net/article/1787319845168091137/1947071026055619e5c5bc187b7e3bdd.webp)
2.在/opt
下创建目录 /keepalived mkdir /opt/keepalived
3.进入/opt
目录,然后将文件解压到刚才创建的目录 cd /opt/
tar -zxvf keepalived-2.0.20.tar.gz -C ./keepalived
![](https://file.jishuzhan.net/article/1787319845168091137/dd7a80aefce222d0080df0e90c28248b.webp)
4.进入解压到的文件夹下 cd /opt/keepalived/keepalived-2.0.20
![](https://file.jishuzhan.net/article/1787319845168091137/6b07a4a46c7054f4d7568bc932f3121c.webp)
5. 配置文件放到/etc下,安装到/usr/local下这样启动的指令就在/usr/local/sbin目录下 ./configure --sysconf=/etc --prefix=/usr/local
![](https://file.jishuzhan.net/article/1787319845168091137/9a79e59a91b42be7c4dec7cea4385cc2.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/c203928688d23a20bb8c9975ebc502ec.webp)
6.安装 make && make install
![](https://file.jishuzhan.net/article/1787319845168091137/f6b2a8afe25f25c845f3c195913d7f4d.webp)
7.如果安装成功,检查配置目录和启动指令
![](https://file.jishuzhan.net/article/1787319845168091137/09dda49c9fe1ec785fbda0f4e38722df.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/9695e9c15fa6258cc44120123e184436.webp)
8.在另一台linux主机也安装一下!!!
5.完成高可用集群配置
1.配置主Nginx
编辑keepalived.conf的配置文件 vim /etc/keepalived/keepalived.conf
![](https://file.jishuzhan.net/article/1787319845168091137/84ed8c7070388c84001b4cbf02d71058.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/aff0524eeee679779af4fb60873eacf5.webp)
2.配置从Nginx
编辑keepalived.conf的配置文件 vim /etc/keepalived/keepalived.conf
![](https://file.jishuzhan.net/article/1787319845168091137/c9b1ba6ed8376e6ccf3fb582be429ab1.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/7f67d7590ed6e78cbc9a3fa918031b5d.webp)
3.测试
1.启动 两个keepalived /usr/local/sbin/keepalived
![](https://file.jishuzhan.net/article/1787319845168091137/afc3e7a056c2efe517b721b95a20f7ca.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/e45d4b41e243803e3c7fe99c183a562c.webp)
2.输入 ip a,看到配置的虚拟ip即成功
![](https://file.jishuzhan.net/article/1787319845168091137/c629c7f92987c14b2d386adb1745c658.webp)
3.使用windows来ping这个虚拟ip,如果能ping通则说明可用
![](https://file.jishuzhan.net/article/1787319845168091137/8feb14cb8f25a8a12445688eb585cdc9.webp)
4.如果没有ping通,就是配置文件的vrrp_strict没注销
1.注销vrrp_strict
![](https://file.jishuzhan.net/article/1787319845168091137/75929d7b47be04f9a819768df818698a.webp)
2.关闭keepalived killall keepalived
或者 kill -9 进程号
![](https://file.jishuzhan.net/article/1787319845168091137/80a4c4eb714f506bf220ecf3b18fbef2.webp)
3.再次启动 /usr/local/sbin/keepalived
4.总体测试
1.win访问 http://192.168.200.18:7777/search/cal.jsp 会一直访问win和主Nginx
![](https://file.jishuzhan.net/article/1787319845168091137/a9edb4090e27eac50b0fb2bdb6020d4f.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/e9cb3f0ceca1b63adcedd02847b72075.webp)
2.关闭主的keepalived来模拟主Nginx挂掉
![](https://file.jishuzhan.net/article/1787319845168091137/766ba4902c9aaa6ad2dc411f598d5f5a.webp)
3.win再次访问 http://192.168.200.18:7777/search/cal.jsp
![](https://file.jishuzhan.net/article/1787319845168091137/fa63055044bec537f5ab3730664bfa89.webp)
![](https://file.jishuzhan.net/article/1787319845168091137/74782e50a8cc552c10d4f626620a4fab.webp)
6.编写自动检测Nginx异常脚本kill keepalived
1.进入keeplived配置文件目录 cd /etc/keepalived/
![](https://file.jishuzhan.net/article/1787319845168091137/d39961e53c450aa3dab8f96293b22e9a.webp)
2.编写shell脚本 vim ch_nginx.sh
shell
#!/bin/bash
num=`ps -C nginx --no-header | wc -l`
if [ $num -eq 0 ];then
killall keepalived
fi
3.为该脚本增加执行权限 chmod 755 ch_nginx.sh
![](https://file.jishuzhan.net/article/1787319845168091137/d2ccc88acffeae94c34391686ce062bd.webp)
4.编写配置文件 vim /etc/keepalived/keepalived.conf
![](https://file.jishuzhan.net/article/1787319845168091137/a1d70aed0500ef5612553f48f3dc138c.webp)
5.重启主Nginx所在的keepalived killall keepalived && /usr/local/sbin/keepalived
![](https://file.jishuzhan.net/article/1787319845168091137/2bcfb44eb5bad03c796da41abfed86d3.webp)
6.测试
1.关闭主nginx ./sbin/nginx -s stop
![](https://file.jishuzhan.net/article/1787319845168091137/0fa9a2106bb46a239342bb58e7992c23.webp)
2.浏览器访问 http://192.168.200.18:7777/search/cal.jsp
- 这里是因为一旦停止主nginx,我们的脚本就会检测出异常,然后杀死keepalived的进程,然后将权重-20
- 这时再访问,就只会访问到从Nginx了
![](https://file.jishuzhan.net/article/1787319845168091137/acf554a0c079641b75dd2a4f26dac90b.webp)
7.注意事项和细节
1.注意事项
![](https://file.jishuzhan.net/article/1787319845168091137/eca89928f552d3fe75803c77d1ab9aef.webp)
2.keepalived.conf 详解
shell
#这里只注释要修改的地方
global_defs {
notification_email {
test@foxmail.com #接收通知的邮件地址
}
notification_email_from Alexandre.Cassen@firewall.loc #发送邮件的邮箱
smtp_server 192.168.200.1 #smtp server 地址
smtp_connect_timeout 30
router_id Node132 #Node132 为主机标识
vrrp_skip_check_adv_addr
#vrrp_strict #这里需要注释,避免虚拟 ip 无法 ping 通
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #主节点 MASTER 备用节点为 BACKUP
interface ens33 #网卡名称
virtual_router_id 51 #VRRP 组名,两个节点的设置必须一样,指明属于同一 VRRP 组
priority 100 #主节点的优先级(1-254 之间),备用节点必须比主节点优先级低
advert_int 1 #组播信息发送间隔,两个节点设置必须一样
authentication { #设置验证信息,两个节点必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虚拟 IP, 两个节点设置必须一样
192.168.200.16
}
}