涉及理論知識點:VRRP協議 http://www.javashuo.com/article/p-sivzzqar-he.htmllinux
三臺機器恢復快照,抹掉LVS的實驗痕跡nginx
wangzb01 web1 wangzb02 Nginx負載均衡1 wangzb03 Nginx負載均衡2,同時也是web2
在wangzb02和wangzb03上都要作web
配置yum源vim
vi /etc/yum.repos.d/nginx.repocentos
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
安裝bash
yum install -y nginx負載均衡
vim /etc/nginx/conf.d/bbs_proxy.conftcp
upstream bbs { ip_hash; server 192.168.153.133:80; server 192.168.153.135:8080; } server { listen 80; server_name bbs.wangzb.cc; location / { proxy_pass http://bbs; 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配置 https://blog.csdn.net/zwhfyy/article/details/70856035測試
在wangzb02和wangzb03上都要作url
yum install -y keepalived
vi /etc/keepalived/keepalived.conf
global_defs { notification_email { xxxx@126.com //定義接收郵件人 } notification_email_from //定義發郵件地址(實際沒有) smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 001 } vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" //此腳本爲監控nginx服務的 interval 3 } vrrp_instance wangzb { state MASTER interface ens33 //網卡 virtual_router_id 001 priority 100 //權重100,此數值要大於backup advert_int 1 authentication { auth_type PASS auth_pass wangzb //定義密碼 } virtual_ipaddress { 192.168.222.100 //定義VIP } track_script { chk_nginx //定義監控腳本,這裏和上面vrr_script後面的字符串保持一致 } }
補充: keepalived中如何配置第三方郵件告警 http://www.javashuo.com/article/p-xbcnydom-cp.html
vim /usr/local/sbin/check_ng.sh
#!/bin/bash#時間變量,用於記錄日誌 d=`date --date today +%Y%m%d_%H:%M:%S` #計算nginx進程數量 n=`ps -C nginx --no-heading|wc -l` #若是進程爲0,則啓動nginx,而且再次檢測nginx進程數量,#若是還爲0,說明nginx沒法啓動,此時須要關閉keepalived if [ $n -eq 0 ] then systemctl start 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 fi fi
修改權限
chmod 755 /usr/local/sbin/check_ng.sh
檢查防火牆, 要保證VRRP協議放行,SElinux要關閉
Centos6添加端口: iptables -A INPUT -p vrrp -j ACCEPT setenforce 0 Centos7添加端口 firewalld-cmd --zone=public --add-port=tcp/vrrp --permanent firewalld-cmd --reload
啓動
systemctl start keepalived
測試點:
手動中止wangzb01上的nginx服務 手動中止wangzb01上的keepalived服務 設置防火牆禁止VRRP協議