lvs
notify_down "/sbin/ipvsadm -d -u 10.11.194.221:53 -r 10.11.194.222:53"
notify_up "/sbin/ipvsadm -a -u 10.11.194.221:53 -r 10.11.194.222:53 -g -w 100"
[root@localhost lvs]# ipvsadm -d -t 10.0.0.111:80 -r 10.0.0.223:80
[root@localhost lvs]# ipvsadm -a -t 10.0.0.111:80 -r 10.0.0.223:80 -g -w 3
http://www.sxt.cn/u/324/blog/3188
DRBD:可以看做是一种网络RAID(镜像RAID1),实现方式:通过网络来镜像整个设备,允许用户在远程机器上建立一个本地块设备的实时镜像,与心跳连接结合使用。DRBD负责接收数据,把数据写到本地磁盘,然后发送个另一个主机,另一个主机再将数据存到主机的磁盘中。每次只允许对一个节点进行读写访问
LVS要达到的目标:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务集群,
Hearbeat:提供了所有HA软件所需要的基本功能,比如:心跳检测和资源接管、检测群集中的系统服务、在群集中的节点间转移共享IP地址的所有者等等
keepalived 配合LVS实现两个功能:1、检测各个服务节点的状态,对故障服务节点进行剔除,对恢复正常的节点重新加入集群 2、VRRP功能:就是HA cluster用功能,keepalived主机出现故障就转移到备机继续提供服务
Keepalived双机热备实现故障时发送邮件通知
Linux 高可用(HA)集群之Keepalived详解
LVS+Keepalived实现负载均衡
[root@localhost ~]# sysctl -w net.ipv4.conf.eth0.arp_announce=2
[root@localhost ~]# sysctl -w net.ipv4.conf.all.arp_announce=2
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "" > /var/www/html/index.html
实测
环境:三台centos7
调度器10.0.0.222 (VIP:10.0.0.111 )
两个realserver 10.0.0.223 10.0.0.224
yum 安装httpd
[root@localhost ~]# yum update --exclude=kernel*
[root@localhost ~]# yum install httpd httpd-devel -y
关闭 selinux和iptables :/etc/selinux/conf 和iptabales -F
[root@localhost ~]# vi /var/www/html/index.html #输入测试内容 两台realserver分别写入 111 10.0.0.222 和 222 10.0.0.223
[root@localhost ~]# service httpd restart #windowsIE浏览器输入ip就能访问到index.html的内容
虚拟机克隆两个realservers 注意克隆后网卡的mac地址变化 配置文件不变
[root@localhost ~]# yum install ipvsadm #注意网络和DNS配置 static需要手动设置dns
ipaddr
gateway
netmask
dns1
[root@localhost lvs]# cat DR.sh
#!/bin/bash
###调度器运行脚本
#---------------mini-rc.lvs_dr-director------------------------
#set ip_forward OFF for lvs-dr director (1 on, 0 off)
#(there is no forwarding in the conventional sense for LVS-DR)
cat /proc/sys/net/ipv4/ip_forward
echo "0" >/proc/sys/net/ipv4/ip_forward
#director is not gw for realservers: leave icmp redirects on
#echo 'setting icmp redirects (1 on, 0 off) '
#echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
#cat /proc/sys/net/ipv4/conf/all/send_redirects
#echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
#cat /proc/sys/net/ipv4/conf/default/send_redirects
#echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
#cat /proc/sys/net/ipv4/conf/eth0/send_redirects
#setup DIP
ETH=eno16777736 ###网卡名称 主要为了centos7网卡名称不是eth0设计
DIP=10.0.0.222
VIP=10.0.0.111
RS1=10.0.0.223
RS2=10.0.0.224
iptables -F
#service httpd start #测试的时候要启用
/sbin/ifconfig $ETH $DIP/8
#add ethernet device and routing for VIP 10.0.0.111
/sbin/ifconfig $ETH:0 $VIP broadcast $VIP netmask 255.255.255.255 #如果有keepalived就不需要这两步 keepalived设置配置文件后会自动添加
/sbin/route add -host $VIP dev $ETH:0
#listing ifconfig info for VIP 10.0.0.111
/sbin/ifconfig $ETH:0
#listing routing info for VIP 192.168.1.111
/bin/netstat -rn
#setup_ipvsadm_table
#clear ipvsadm table
/sbin/ipvsadm -C
#installing LVS services with ipvsadm
#add telnet to VIP with round robin scheduling
/sbin/ipvsadm -A -t $VIP:80 -s rr
#forward telnet to realserver using direct routing with weight 1
/sbin/ipvsadm -a -t $VIP:80 -r $RS1:80 -g -w 1
#forward telnet to realserver using direct routing with weight 1
/sbin/ipvsadm -a -t $VIP:80 -r $RS2:80 -g -w 1
#displaying ipvsadm settings
/sbin/ipvsadm
#not installing a default gw for LVS_TYPE vs-dr
#---------------mini-rc.lvs_dr-director------------------------
[root@RS1 ~]# cat rs.sh
#!/bin/bash
###真实机运行脚本
#----------mini-rc.lvs_dr-realserver------------------
#setup IP
ETH=eno16777736
VIP=10.0.0.111
RS=10.0.0.223 #不同realservers不同ip 其他脚本设置一样 就这不一样
DF=10.0.0.1
iptables -F
/sbin/ifconfig $ETH $RS/8
#installing default gw 192.168.1.1 for vs-dr
/sbin/route add default gw $DF
#showing routing table
/bin/netstat -rn
#set_realserver_ip_forwarding to OFF (1 on, 0 off).
echo "0" >/proc/sys/net/ipv4/ip_forward
#install_realserver_vip
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
#ifconfig output
/sbin/ifconfig lo:0
#installing route for VIP 192.168.1.11 on device lo:0
/sbin/route add -host $VIP dev lo:0
#listing routing info for VIP 192.168.1.11
/bin/netstat -rn
#hiding interface lo:0, will not arp
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
cat /proc/sys/net/ipv4/conf/all/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
cat /proc/sys/net/ipv4/conf/lo/arp_announce
#----------mini-rc.lvs_dr-realserver------------------
ipvsadm -L #查看lvs运行状态
tail -f /vat/log/messages #日志查看启动日志 tail -f 可以实时打印新产生的日志 一有新日志就会打印
注意点: 一定要关闭iptables 否则访问会出现无法到主机路由之类的
[root@DR-MASTER ~]# cat /etc/keepalived/keepalived.conf global_defs { notification_email { dba.gao@gmail.com ixdba@163.com } notification_email_from Keepalived@localhost #设置邮件的发送地址。 smtp_server 192.168.200.1 #设置smtp server地址。 smtp_connect_timeout 30 #设置连接smtp服务器超时时间。 router_id LVS_MASTER #运行Keepalived服务器的一个标识。发邮件时显示在邮件标题中的信息 } #vrrp实例定义部分 vrrp_instance VI_1 { state MASTER # 备机 这里改为BACKUP interface eth0 virtual_router_id 51 priority 100 # 备机 这里改为99
advert_int 1 authentication { auth_type PASS auth_pass 1111 #设置验证与BACKUP必须使用相同的密码才能正常通信。 } virtual_ipaddress { #设设置多个虚拟IP地址,每行一个。 192.168.1.9 } } #虚拟服务器定义部分 virtual_server 192.168.1.9 80 { delay_loop 6 #设置健康检查时间,单位是秒。 lb_algo rr #设置负载调度算法,这里设置为rr,即轮询算法。 lb_kind DR #设置LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选。 persistence_timeout 50 protocol TCP #指定转发协议类型,有tcp和udp两种。 real_server 192.168.1.7 80 { #erver的真实IP地址和端口,ip与端口之间用空格隔开。 weight 3 TCP_CHECK { #realserve的状态检测设置部分,单位是秒 connect_timeout 10 #10秒无响应超时 nb_get_retry 3 #重试次数 delay_before_retry 3 #重试间隔 } } real_server 192.168.1.8 80 { #配置服务节点2 weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }