Keepalived高可用Nginx
实验拓扑:
1.在两台realserver上配置web服务
2.keepalived配置
master的配置
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
}
vrrp_script chk_down { #keepalived控制脚本
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" #脚本内容
interval 2
weight -6
}
vrrp_script chk_nginx { #检测nginx服务脚本
script "killall -0 nginx && exit 0 || exit 1" #脚本内容
interval 2
weight -6
}
vrrp_instance VI_1 { #配置实例
state MASTER
interface eno16777736
virtual_router_id 88
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.88.88/16 dev eno16777736 label eno16777736:0
}
track_script { #调用脚本
chk_down
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master" #定义通告脚本
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
backup的配置:
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
}
vrrp_script chk_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 2
weight -6
}
vrrp_script chk_nginx {
script "killall -0 nginx && exit 0 || exit 1"
interval 2
weight -6
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 88
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.88.88/16 dev eno16777736 label eno16777736:0
}
track_script {
chk_down
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
3.nginx调度器配置
两台nginx调度器的配置文件
#http段中的配置
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
upstream webserver {
server 10.1.68.5 weight=1 max_fails=2;
server 10.1.68.6 weight=1 max_fails=2;
}
server {
listen 80;
server_name localhost;
location / {
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://webserver;
}
}
}
在两台调度器上同时启动nginx和keepalived,此时VIP在nginx1主机上
4.测试
通过VIP访问,可正常调度
停止调度器1上面的nginx服务,VIP漂移至nginx2主机上
依然可以正常调度
一些关于Keepalived相关教程集合: