Keepalived是一个免费开源的,用C编写的相似于layer3, 4 & 7交换机制软件,具有咱们平时说的第3层、第4层和第7层交换机的功能。主要提供loadbalancing(负载均衡)和 high-availability(高可用)功能,负载均衡实现须要依赖Linux的虚拟服务内核模块(ipvs),而高可用是经过VRRP协议实现多台机器之间的故障转移服务。 html
上图是Keepalived的功能体系结构,大体分两层:用户空间(user space)和内核空间(kernel space)。
内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其余相关的网络功能)两个部份。
用户空间:linux
Keepalived的全部功能是配置keepalived.conf文件来实现的。ios
su - root yum -y install kernel-devel* yum -y install openssl-* yum -y install popt-devel yum -y install lrzsz yum -y install openssh-clients yum -y install libnl libnl-devel popt
下面介绍安装keepalived,并将其加入启动服务。nginx
将keepalived-1.2.15.tar.gz上传到服务器/usr/local/下。算法
cd /usr/local tar -zxvf keepalived-1.2.15.tar.gz cd keepalived-1.2.15
一、configure执行配置命令shell
./configure --prefix=/usr/local/keepalived
二、编译make服务器
make网络
三、安装make installapp
至此安装成功,下面为了使用的方便,安装成功后作成服务模式,方便启动和关闭负载均衡
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/sbin/keepalived /usr/sbin/
安装完成后,进入安装目录的etc目录下,将keepalived相应的配置文件拷贝到系统相应的目录当中。keepalived启动时会从/etc/keepalived目录下查找keepalived.conf配置文件,若是没有找到则使用默认的配置。/etc/keepalived目录安装时默认是没有安装的,须要手动建立。配置文件目录结构以下所示:
shell> tree -l /usr/local/keepalived/etc -- keepalived | |-- keepalived.conf | `-- samples | |-- keepalived.conf.status_code | |-- keepalived.conf.track_interface | |-- keepalived.conf.vrrp | |-- 。。。 |-- rc.d | `-- init.d | `-- keepalived `-- sysconfig `-- keepalived
分别对应系统目录(忽略samples目录):
/etc/keepalived/keepalived.conf /etc/rc.d/init.d/keepalived /etc/sysconfig/keepalived
将配置文件拷贝到系统对应的目录下:
#建立keepalived文件夹
shell> mkdir /etc/keepalived
#将keepalived配置文件拷贝到etc下 shell> cp /usr/local/keepalived/etc/keepalived.conf /etc/keepalived/keepalived.conf
#将init.d文件拷贝到etc下,加入开机启动项 shell> cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/keepalived
#添加可执行权限
shell> chmod +x /etc/init.d/keepalived
#将keepalived文件拷贝到etc下,加入网卡配置 shell> cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
设置keepalived服务开机启动:
shell> chkconfig keepalived on shell> service keepalived start #启动服务 shell> service keepalived stop #中止服务 shell> service keepalived restart #重启服务
添加完可查询系统服务是否存在:
chkconfig --list
另外须要注意的一点是,keepalived启动时不会检查配置文件的语法是否正确,因此咱们在编写配置文件时要特别当心,别写错了,不然会出现一些意想不到的现象。
使用service keepalived start
命令启动服务时,默认会将/etc/sysconfig/keepalived
文件中KEEPALIVED_OPTIONS
参数做为keepalived
服务启动时的参数,并从/etc/keepalived/
目录下加载keepalived.conf配置文件,或用 -f 参数指定配置文件的位置。
# Options for keepalived. See `keepalived --help' output and keepalived(8) and # keepalived.conf(5) man pages for a list of all options. Here are the most # common ones : # # --vrrp -P Only run with VRRP subsystem. # --check -C Only run with Health-checker subsystem. # --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop. # --dont-release-ipvs -I Dont remove IPVS topology on daemon stop. # --dump-conf -d Dump the configuration data. # --log-detail -D Detailed log messages.日志默认输出在/var/log/message文件中 # --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON) # KEEPALIVED_OPTIONS="-D"
运行keepalived --help
能够查看启动时的可选参数,这些可选参数均可以配置在/etc/sysconfig/keepalived
文件中的KEEPALIVED_OPTIONS
选项中,做为服务启动时的参数。
keepalived正常运行后,会启动3个进程,其中一个是父进程,负责监控其子进程。一个是vrrp子进程,另一个是checkers子进程。
shell> ps -ef | grep keepalived root 831 1 0 11:22 ? 00:00:00 keepalived -D root 840 831 0 11:22 ? 00:00:00 keepalived -D root 841 831 0 11:22 ? 00:00:00 keepalived -D
chkconfig --add keepalived #添加时必须保证/etc/init.d/keepalived存在 chkconfig keepalived on
添加完可查询系统服务是否存在:
chkconfig --list
到此keepalived就安装完成了。
启动:service keepalived start
中止:service keepalived stop
重启:service keepalived restart
keepalived服务安装完成以后,后面的主要工做就是在keepalived.conf文件中配置HA和负载均衡。一个功能比较完整的经常使用的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 } } }
一、email通知(notification_email、smtp_server、smtp_connect_timeout):用于服务有故障时发送邮件报警,可选项,不建议用。须要系统开启sendmail服务,建议用第三独立监控服务,如用nagios全面监控代替。
二、lvs_id:lvs负载均衡器标识,在一个网络内,它的值应该是惟一的。
三、router_id:用户标识本节点的名称,一般为hostname
四、花括号{}:用来分隔定义块,必须成对出现。若是写漏了,keepalived运行时不会获得预期的结果。因为定义块存在嵌套关系,所以很容易遗漏结尾处的花括号,这点须要特别注意。
1.将keepalived日志输出到local0:
vi /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0"
2.在/etc/rsyslog.conf里添加:
local0.* /var/log/keepalived.log
3.从新启动keepalived和rsyslog服务:
service rsyslog restart
service keepalived restart
iptables -A INPUT -d 224.0.0.18 -j ACCEPT /etc/rc.d/init.d/iptables save
一、Keepalived安装与配置:
https://blog.csdn.net/xyang81/article/details/52554398
二、nginx和keepalived实现nginx高可用
https://blog.csdn.net/u012453843/article/details/69668663
LVS + Keepalived Chinese application doc
Keepalived User Guide
Linux服务器集群系统(一) – LVS项目介绍
Linux服务器集群系统(二)–LVS集群的体系结构
Linux服务器集群系统(三)–LVS集群中的IP负载均衡技术
Linux服务器集群系统(四) – LVS集群的负载调度
LVS原理详解及部署之一:ARP原理准备
LVS原理详解及部署之二:LVS原理详解(3种工做方式8种调度算法)
LVS原理详解及部署之三:手动部署LVS
LVS原理详解及部署之四:keepalived介绍