一,準備工做
1:準備2臺機器,分別安裝上Java、Tomcat、Nginx、Ipvs和Keepalived
2:規劃:
(1)虛擬ip用192.168.1.77
(2)Master機器的ip:192.168.1.106 , Nginx端口80,Tomcat端口8080
(3)Backup機器的ip:192.168.1.201 ,Nginx端口80,Tomcat端口8080
n 配置Nginx,Nginx對兩臺機器的Tomcat作負載均衡
n 配置Keepalived
1:master配置,示例以下:
global_defs {
notification_email { cc@cc.com }
notification_email_from cc@cc.com
smtp_server smtp.cc.com
smtp_connect_timeout 30
router_id nginx_master
}nginx
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.77
}
}
2:Backup的配置,示例以下:
global_defs {
notification_email { cc@cc.com }
notification_email_from cc@cc.com
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id cc_backeup
}shell
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.77
}
}
3:運行後能夠經過以下命令查看
watch ipvsadm -lc:查看IPVS的鏈接狀況
也可用以下命令查看:ipvsadm -Lc服務器
讓Keepalived監控Nginx的狀態
當NginX中止服務的時候可以自動切換,從而實現服務的高可用性。
1:這個就須要shell腳原本處理,示例以下:
NGINX=/usr/common/nginx/sbin/nginx
PORT=80
nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
$NGINX -s stop
$NGINX
sleep 3
nmap localhost -p $PORT | grep "$PORT/tcp open"
[ $? -ne 0 ] && cd /usr/common/keepalived/sbin && pkill keepalived
echo "over"
fi
注意:要對這個腳本文件設置權限,如:chmod 777 checkNginx.sh負載均衡
2:而後在keepalived.conf中添加對對腳本的調用
(1)在VRRP服務器配置前,增長:
vrrp_script chk_http_port {
script "/usr/common/keepalived/etc/keepalived/checkNginx.sh"
interval 2
weight 2
}
(2)在vrrp_instance配置裏面的最後部分,添加:
track_script {
chk_http_port
}tcp
Keepalived用作HA
Keepalived用作HA的時候,和具體的應用或服務是沒有關係的,相似於前
面學習的Keepalived+Nginx,一樣能夠實現:
1:Keepalived + Varnish
2:Keepalived + Tomcat
3:Keepalived + Redis
4:Keepalived + MySql
5:Keepalived + ……任意的其餘服務或應用學習