1、安装
server1、server2分别使用yum安装nginx和keepalived
yum install nginx
yum install keepalived
server3解压tomcat(apache-tomcat-7.0.75.tar.gz)
2、配置
2.1、server3配置:
具体配置不详说,单台机器多tomcat实例,分别配置三个实例端口为8080、8081、8082
页面index.html输入内容分别为hello 8080、hello 8081、hello 8082
2.2、server1、server2配置nginx:
# vi /etc/nginx/nginx.conf
# 在server {}修改location为下面的状态,在http {}添加upstream的内容
http {
server {
location / {
proxy_pass http://test-pa.com;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
upstream test-pa.com {
server 192.168.11.175:8080;
server 192.168.11.175:8081;
server 192.168.11.175:8082;
}
2.3、server1配置keepalived:
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/keepalived/scripts/check_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.11.181
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 52
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.11.182
}
}
# mkdir /etc/keepalived/scripts
# vi /etc/keepalived/scripts/check_nginx.sh
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq 0 ]; then
echo "`date "+%Y-%m-%d--%H:%M:%S"` nginx stop" >> /var/log/check_ng.log
/usr/sbin/nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived.service
fi
fi
2.4、server2配置keepalived:
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/keepalived/scripts/check_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.11.181
}
}
vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.11.182
}
}
# mkdir /etc/keepalived/scripts
# vi /etc/keepalived/scripts/check_nginx.sh
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq 0 ]; then
echo "`date "+%Y-%m-%d--%H:%M:%S"` nginx stop" >> /var/log/check_ng.log
/usr/sbin/nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived.service
fi
fi
3、测试
3.1、server1:
# curl http://192.168.11.181
轮训返回hello 8080、hello 8081、hello 8082
停止nginx服务,会重新启动nginx服务,如果nginx服务启动不了,则关闭keepalived服务,关闭keepalived服务,则VIP消失。
3.2、server2:
# curl http://192.168.11.182
轮训返回hello 8080、hello 8081、hello 8082
停止nginx服务,会重新启动nginx服务,如果nginx服务启动不了,则关闭keepalived服务,关闭keepalived服务,则VIP消失。
4、注意
如果环境安装方式不一样,配置也要依照实际情况做相应的修改,因为启动服务的脚本、配置文件的路径都发生了改变。
参考:
https://blog.csdn.net/lexang1/article/details/52386909