lvs+keepalived
a、安装依赖包:yum -y install kernel-devel* make* gcc* openssl* libnl* popt* b、解压高可用软件keepalived:tar -zxvf keepalived-1.2.16.tar.gz -C /usr/src/ c、编译安装keepalived包:cd /usr/src/keepalived-1.2.16, 执行:./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/ 再执行:make && make install 将启动文件和配置文件复制到指定位置: cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/sbin/keepalived /usr/sbin/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ d、修改/etc/keepalived.conf配置文件,达到高可用状态 vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id MASTER #主写MASTER,备写BACKUP } vrrp_instance VI_1 { state MASTER #主写MASTER,备写BACKUP interface eth0 #本机的有效网卡 virtual_router_id 51 priority 100 #优先级权值,主的值比备的要高 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.108.200 #虚拟VIP } } 配置好后,启动keepalived服务:systemctl restart keepalived
NAT模式 关闭防火墙,selinux,绑定主机名(lvs主备需要绑定两个vip) 保证后端web服务器和lvs主备能ping通 打开lvs主备的路由转发功能: vi /etc/sysctl.conf 将net.ipv4.ip_forward = 0 改 1 再保存退,执行sysctl -p 刷新生效 再启动 /etc/init.d/keepalived start keepalived(一主一备,备的权值要比主小priority 100) lvs主备配置两张网卡,一张网卡的ip要和后端web的ip在同一个网段 两卡网卡有一张设置的IP要和后面的WEB服务器在一个网段,且不用加网关,另一个网卡设置成另外一个网段并加上网关 两台WEB服务器网卡IP设置注意的地方: 网卡设置时要将虚拟IP设为网关 yum -y install kernel-devel* make* gcc* openssl* libnl* popt*(依赖包) ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux tar -zxvf ipvsadm-1.26.tar.gz -C /usr/src/ make && make install tar -zxvf keepalived-1.2.16.tar.gz -C /usr/src ./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/ 指定内核目录 cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/sbin/keepalived /usr/sbin/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_MASTER #主写LVS-MASTER,备写LVS-BACKUP } vrrp_instance VI_1 { state MASTER #主写MASTER,备写BACKUP interface eth0 #本机的有效网卡 virtual_router_id 51 priority 100 #优先级权值,主的值比备的要高 virtual_ipaddress { 192.168.3.41 #虚拟VIP(用户访问网页的ip,必须和lvs主备ip在同一网段) } cp上面的改动 vrrp_instance VI_GATEWAY { tate MASTER #主写MASTER,备写BACKUP interface eth1 #本机的有效网卡 virtual_router_id 52 #router_id,和上面不一样 priority 100 #优先级权值,主的值比备的要高 virtual_ipaddress { 1.1.1.100 #虚拟VIP,作为后端WEB服务器的网关用 } virtual_server 192.168.3.41 80(用户访问的vip) { delay_loop 6 lb_algo rr #高度算法,rr是轮询算法 lb_kind NAT #集群模式,这里是NAT模式 persistence_timeout 50 #主备心跳连接超时时间 protocol TCP #指的是四层分发 real_server 1.1.1.93 80(为web服务器的ip和端口) { weight 1 #算法高度的权值,如果真实服务器权值一样,那么平均分发 #HTTP_GET { TCP_CHECK { #验证web服务器是否存在的方式 connect_timeout 3 #连接超时时间,时间秒 nb_get_retry 3 #失败后连接的次数 delay_before_retry 3 #间隔时间秒 connect_port 80 } }
第一步:搭建lvs-dr集群 1、拿到服务器的三步曲 2、在lvs主和备上安装keepalived 和 ipvsadm 两个包,并配置keepalived的vip,指向真实的web服务器 3、在两台服务器上写lvs-dr.sh的绑定vip脚本,写好后启动 第二步:配置nfs共享存储(用keepalived做两台nfs做主备) 在两台nfs上解压安装keepalived 注意:route_id不能和lvs上keepalived的route_id一样 另外两台nfs共享的目录要一样,先做一台nfs搭建应用(论坛)再cp到另一台nfs上,两台nfs都启动,在web服务 器上使用vip挂载 mount -o rw -t 192.168.201.100:/nfs /aa umount 192.168.201.100:/nfs 关机:先关web再关nfs,keepalived 启动:先启动keepalived,nfs再启动web服务器 在nfs服务器上配置nfs共享文件目录/nfs 1、修改共享配置文件/etc/exports文件 # vi /etc/exports /nfs (rw) 2、启动nfs服务 # /etc/init.d/nfs restart 3、在两台web服务器上挂nfs共享存储到本地的/nfs目录 # mount -o rw -t nfs 192.168.5.200:/nfs /nfs 第三步:配置两台web服务器lamp环境,以下两台web服务器都要操作 1、使用yum安装lamp环境 # yum -y install httpd* php* mysql* 2、修改apache网站家目录到/nfs/web目录下 # mkdir /nfs/web # vi /etc/httpd/conf/httpc.conf 292 DocumentRoot "/nfs/web" 317 <Directory "/nfs/web"> 3、启动apache服务 # /etc/init.d/httpd restart 第四:安装mysql服务器(mysql主备) 在mysql主备上安装keepalived,修改配置文件route_id和nfs,lvs的不一样,在主备mysql上授权,grant all on discuz.* to 'discuz'@'192.168.201.%'或者 '%' identified by '123' 安装应用(论坛)时服务器ip填写mysql的VIP(只要安装keepalived,不需要做主从) 1、使用yum安装mysql服务 # yum -y install mysql* 2、启动mysql服务 # /etc/init.d/mysqld restart 3、登陆数据库授权远程登陆 # mysql -uroot -p123456 # grant all on *.* to 'discuz'@'%' identified by '123456'; # flush privileges; 第五步:在web服务器上安装应用 1、解压应用包到web的家目录下 # unzip Discuz_X3.2_SC_UTF8.zip -d /nfs/web/ 2、来到/nfs/web目录下配置应用 # cd /nfs/web # mkdir /nfs/web/discuz # mv readme/* discuz/ # mv upload/* discuz/ # mv utility/* discuz/ 3、使用浏览器打开安装应用 # firefox http://192.168.5.100/discuz & 4、浏览器安装步骤省略..... 5、安装完成后,再打开浏览测试 # firefox http://192.168.5.100/discuz &
Keepalived + LVS 服务端安装配置 keepalived+LVS方案中,两台调度服务需要安排和配置Keepalived+LVS,并配置主备关系,实现负载均衡和高可用 目标服务器:调度主和调度备,两台的安装配置基本完全相同,只是keepalive.conf的部分配置需要修改。 先确认系统内核,用getconf LONG_BIT,和uname -a都可以查看 搭建这个LVS+Keepalived(DR)需要的关键步骤及注意事项, DR模式主要是靠虚拟IP来实现,客户端访问服务器首先 会找keeaplived服务器,然后由keepalived服务器调度找到真实机,最后真实机通过自己的虚拟IP直接返回给客户端。 要注意popt-static-1.13-7.el6.x86_64.rpm这个包,不装这个包,安装 ipvs的时候会报错。 keepalived安装的时候一定要指定内核,要不然keepalived启动后只有两进程,正常是三个。如果不指定内核 即使keepalived启动了,keepalived也发现不了真实机。 第1步:下载keepalived-1.2.16.tar.gz和ipvsadm-1.26.tar.gz wget http://www.keepalived.org/software/keepalived-1.2.16.tar.gz wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz wget http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm 第2步:在192.168.10.1主跟192.168.10.1备机上安装(keepalived主备) yum -y install kernel-devel make gcc openssl-devel libnl* popt* 备:如果yum安装的popt包里没有包含popt-static包那么需要手动安装这个RPM包 rpm -ivh popt-static-1.13-7.el6.x86_64.rpm ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux tar -zxvf ipvsadm-1.26.tar.gz -C /usr/src/ cd ipvsadm-1.26/ make make install cd .. tar -zxvf keepalived-1.2.16.tar.gz cd keepalived-1.2.16/ ./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/ make && make install cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/sbin/keepalived /usr/sbin/ 第3步:在两台主备LVS上分别配置keepalived vim /etc/keepalived/keepalived.conf #! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc //邮件地址 } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 //邮件服务器IP smtp_connect_timeout 30 //邮件服务器连接超时时间 router_id LVS_MASTER //主配置LVS_MASTER,备改成LVS_BACKUP } vrrp_instance VI_1 { state MASTER //主配置MASTER,备改成BACKUP interface eth0 //服务器使用的网卡 virtual_router_id 60 priority 100 //优先级,备服务器该值要低于主服务器 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.169.200 //配置虚拟IP,就是VIP } } virtual_server 192.168.169.200 80 { //配置虚拟IP要指向的端口 delay_loop 6 lb_algo wrr //使用wrr加权轮循算法 lb_kind DR //使用DR负载均衡技术 nat_mask 255.255.255.0 persistence_timeout 50 //连接超时时间 protocol TCP //使用TCP进行通信 real_server 192.168.169.153 80 { //真实服务器IP与端口 weight 3 //权值 HTTP_GET { //使用HTTP方式验证真实服务器有效性 connect_timeout 3 //连接超时时间 nb_get_retry 3 //每次连接次数 delay_before_retry 3 //每次重试前相隔时间 connect_port 80 } } real_server 192.168.169.154 80 { weight 3 HTTP_GET { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } LVS WEB服务器安装配置 LVS-DR模式中,后端真实服务器(RealServer)无需安装相关软件,只需要对VIP进行绑定和路由设置等一系列操作,这里整理为一个脚本:lvs_realserver.sh,详细解释如下 #!/bin/bash # description: Config realserver LVS_VIP=192.168.169.200 //虚拟IP /etc/rc.d/init.d/functions case "$1" in start) /sbin/ifconfig lo:0 $LVS_VIP netmask 255.255.255.255 broadcast $LVS_VIP /sbin/route add -host $LVS_VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "LVS-RealServer Start OK" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $LVS_VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "LVS-RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0 注意:脚本前头位置的 /etc/rc.d/init.d/functions 是需要手动给他加上执行权限 chmod +x /etc/rc.d/init.d/functions LVS 客户端配置http服务 安装启动httpd
第一步:将lvs主备两台机器两张卡的IP设置好,两台WEB服务器IP设置好,并将主机名更改好,并将IP和主机名写进/etc/hosts文件 LVS主备服务器网卡IP设置注意的地方 两卡网卡有一张设置的IP要和后面的WEB服务器在一直网段,且不用加网关,另一个网卡设置成另外一个网段并加上网关 两台WEB服务器网卡IP设置注意的地方: 网卡设置时要将虚拟IP设为网关 第二步:在主备两台服务器编译安装ipvsadm和keepalived软件(安装方法见上面DR模式的安装方法) 第1步:下载keepalived-1.2.16.tar.gz和ipvsadm-1.26.tar.gz wget http://www.keepalived.org/software/keepalived-1.2.16.tar.gz wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz wget http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm 第2步:在192.168.10.1主跟192.168.10.1备机上安装(keepalived+lvs主备) yum -y install kernel-devel* make* gcc* openssl* libnl* popt* 备:如果yum安装的popt包里没有包含popt-static包那么需要手动安装这个RPM包 ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux tar -zxvf ipvsadm-1.26.tar.gz -C /usr/src/ cd /usr/src/ipvsadm-1.26/ make make install cd .. tar -zxvf keepalived-1.2.16.tar.gz -C /usr/src cd /usr/src/keepalived-1.2.16/ ./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/ make && make install cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/sbin/keepalived /usr/sbin/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived 第三步:修改keepalived配置文件/etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id LVS_MASTER #主写LVS-MASTER,备写LVS-BACKUP } vrrp_instance VI_1 { state MASTER #主写MASTER,备写BACKUP interface eth0 #本机的有效网卡 virtual_router_id 51 priority 100 #优先级权值,主的值比备的要高 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.5.100 #虚拟VIP } } vrrp_instance VI_GATEWAY { state MASTER #主写MASTER,备写BACKUP interface eth1 #本机的有效网卡 virtual_router_id 52 #router_id,和上面不一样 priority 100 #优先级权值,主的值比备的要高 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 1.1.1.100 #虚拟VIP,作为后端WEB服务器的网关用 } } virtual_server 192.168.5.100 80 { delay_loop 6 lb_algo rr #高度算法,rr是轮询算法 lb_kind NAT #集群模式,这里是NAT模式 persistence_timeout 50 #主备心跳连接超时时间 protocol TCP #指的是四层分发 real_server 1.1.1.93 80 { weight 1 #算法高度的权值,如果真实服务器权值一样,那么平均分发 #HTTP_GET { TCP_CHECK { #验证web服务器是否存在的方式 connect_timeout 3 #连接超时时间,时间秒 nb_get_retry 3 #失败后连接的次数 delay_before_retry 3 #间隔时间秒 connect_port 80 } } real_server 1.1.1.94 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } 第四步:开机lvs主备两台机器的路由转发功能 vi /etc/sysctl.conf 将net.ipv4.ip_forward = 0 改 1 && sysctl -p systemctl start keepalived 第五步:两台WEB服务器安装httpd服务并添加测试文件 yum -y install httpd 第六步:在客户机上访问192.168.5.100虚拟IP进行测试