nginx单点故障解决方案keepalived
阅读数:163 评论数:0
跳转到新版页面分类
应用软件
正文
相关名词
1、nginx
一个高性能web-server和实施反向代理的软件。
2、lvs
Linux Virtual Server,Linux操作系统层面的一个高性能、高可用、负载均衡服务器。
3、keepalived
一款用来检测服务状态存活的性的软件,常用来做高可用。
4、f5
一个高性能、高可用、负载均衡的硬件设备。
5、dns轮询
通过在dns-server上对一个域名设置多个ip解析,来扩充web-server性能及实施负载均衡的技术。
keepalived安装与配置
keepalived是一个免费开源的、用C编写的软件 。
https://www.keepalived.org/download.html
1、安装
shell> cd /usr/local/src
shell> wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz
shell> tar -zxvf keepalived-1.2.24.tar.gz
shell> cd keepalived-1.2.24
shell> ./configure --prefix=/usr/local/keepalived
shell> make && make install
keepalived启动时默认会从/etc/keepalived目录下查找keepalived.conf配置文件,除非另行制定,所以需要将安装文件下带的文件复制过去。
2、开机自启动
创建keepalived.service文件
[Unit]
Description=Keepalived
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
ExecStart=/usr/local/keepalived/sbin/keepalived -D
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload 重新加载
systemctl enabled keepalived.service 设置开机自动启动
systemctl disable keepalived.service 取消开机自动启动
systemctl start keepalived.service 启动
systemctl stopo keepalived.service停止
3、配置文件说明
一个功能比较完整的常用的keepalived配置文件,主要包含三块:全局定义块、VRRP实例定义块和虚拟服务器定义块。全局定义块是必须的,如果keepalived只用来做ha(不做负载均衡),虚拟服务器是可选的。下面是一个功能比较完整的配置文件模板
#全局定义块
global_defs {
# 邮件通知配置
notification_email {
email1
email2
}
notification_email_from email
smtp_server host
smtp_connect_timeout num
lvs_id string
router_id string ## 标识本节点的字条串,通常为hostname
}
#VRRP 实例定义块
vrrp_sync_group string {
group {
string
string
}
}
vrrp_instance string {
state MASTER|BACKUP
virtual_router_id num
interface string
mcast_src_ip @IP
priority num
advert_int num
nopreempt
smtp_alert
lvs_sync_daemon_interface string
authentication {
auth_type PASS|AH
auth_pass string
}
virtual_ipaddress { # Block limited to 20 IP addresses @IP
@IP
@IP
}
}
#虚拟服务器定义块
virtual_server (@IP PORT)|(fwmark num) {
delay_loop num
lb_algo rr|wrr|lc|wlc|sh|dh|lblc
lb_kind NAT|DR|TUN
persistence_timeout num
protocol TCP|UDP
real_server @IP PORT {
weight num
notify_down /path/script.sh
TCP_CHECK {
connect_port num
connect_timeout num
}
}
real_server @IP PORT {
weight num
MISC_CHECK {
misc_path /path_to_script/script.sh(or misc_path “/path_to_script/script.sh <arg_list>”)
}
}
real_server @IP PORT {
weight num
HTTP_GET|SSL_GET {
url {
# You can add multiple url block path alphanum
digest alphanum
}
connect_port num
connect_timeout num
nb_get_retry num
delay_before_retry num
}
}
}
1、全局定义块
email通知:需要系统开启sendmail服务,建议用第三方独立监控服务,如用nagios全面监控代替。
lvs_id:lvs负载均衡器标识,在一个网络内,它的值应该是唯一的。
router_id:用户标识本节点的名称,通常为hostname。
2、VRRP实例定义块
group:至少要包含一个vrrp实例,vrrp实例名称必须和vrrp_instance定义一致。
vrrp_instance:vrrp实例体
(1)state
实例状态,只有MASTER和BACKUP两种状态,并且需要全部大写。MASTER为工作状态,BACKUP为备用状态。当MASTER所在的服务器失效时,BACKUP所在的服务会自动把它的状态由BACKUP切换到MASTER状态。当失效的MASTER所在的服务恢复时,BACKUP从MASTER恢复到BACKUP状态。
(2)interface
对外提供服务的网卡接口,即VIP绑定的网卡接口。如:eth0,eth1。当前主流的服务器都有2个或2个以上的接口(分别对应外网和内网),在选择网卡接口时,一定要核实清楚。
(3)mcast_src_ip
本机ip地址。
(4)virtual_router_id
虚拟路由的ID号,每个节点设置必须一样,可选择IP最后一段使用,相同的 VRID 为一个组,他将决定多播的 MAC 地址。
(5)priority
节点优先级,取值范围0~254,MASTER要比BACKUP高。
(6)advert_int
MASTER与BACKUP节点间同步检查的时间间隔,单位为秒。
(7)lvs_sync_daemon_interface
负载均衡器之间的监控接口。
(8)authentication
验证类型和验证密码。类型主要有 PASS、AH 两种,通常使用PASS类型,据说AH使用时有问题。验证密码为明文,同一vrrp 实例MASTER与BACKUP使用相同的密码才能正常通信。
(9)smtp_alert
有故障时是否激活邮件通知。
(10)nopreempt
禁止抢占服务。默认情况,当MASTER服务挂掉之后,BACKUP自动升级为MASTER并接替它的任务,当MASTER服务恢复后,升级为MASTER的BACKUP服务又自动降为BACKUP,把工作权交给原MASTER。当配置了nopreempt,MASTER从挂掉到恢复,不再将服务抢占过来。
(11)virtual_ipaddress
虚拟IP地址池,可以有多个IP,每个IP占一行,不需要指定子网掩码。注意:这个IP必须与我们的设定的vip保持一致。