MySQL实战五:lvs+keepavlied双主实现服务器负载均衡

lvs+keepalived主从高可用负载均衡

安装keepalived和lvs管理工具
#yum install keepalived ipvsadm -y

-------------------------lvs-master01配置---------------------------------
lvs-master01配置
# vi /etc/keepalived/keepalived.conf 
! Configuration File for keepalived 
 
global_defs { 
   # 接收邮件地址 
   notification_email { 
     [email protected] 
     [email protected] 
     [email protected] 
   } 
   # 邮件发送地址 
   notification_email_from [email protected] 
   # 本地邮件服务器发邮件 
   smtp_server 127.0.0.1
   smtp_connect_timeout 30 
   router_id LVS_RR 
} 
# vrrp_instance 是一组逻辑分组的 VIP,可以写多个
vrrp_instance VI_1 { 
    state MASTER  
    interface ens33 # 实例工作的网络接口 
    virtual_router_id 55 # VRRP 路由 ID 实例,每个实例是唯一的 
    priority 100 # 优先级,备服务器设置 90 
    advert_int 1 # 指定 VRRP 心跳包通告间隔时间,默认 1 秒 
    # VRRP 验证块 
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    # VIP 定义块 
    virtual_ipaddress { 
        192.168.31.55/24 
    } 
} 
vrrp_instance VI_2 { 
    state BACKUP     
    interface ens33 
    virtual_router_id 56  
    priority 90    
    advert_int 1    
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress { 
        192.168.31.56/24 
    } 
}
virtual_server 192.168.31.55 3306 { 
    delay_loop 6 
    lb_algo rr 
    lb_kind DR 
    protocol TCP 
    real_server 192.168.31.9 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口  
            connect_timeout 3  # 连接远程服务器超时时间 
            nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
    real_server 192.168.31.10 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口 
            connect_timeout 3  # 连接远程服务器超时时间 
            nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
} 
virtual_server 192.168.31.56 3306 { 
    delay_loop 6 
    lb_algo rr 
    lb_kind DR 
    protocol TCP 
    real_server 192.168.31.9 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口 
            connect_timeout 3  # 连接远程服务器超时时间
			nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
    real_server 192.168.31.10 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口 
            connect_timeout 3  # 连接远程服务器超时时间 
            nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
} 

-------------------------lvs-master02配置---------------------------------

lvs-master02配置
# vi /etc/keepalived/keepalived.conf 
! Configuration File for keepalived 
 
global_defs { 
   # 接收邮件地址 
   notification_email { 
     [email protected] 
     [email protected] 
     [email protected] 
   } 
   # 邮件发送地址 
   notification_email_from [email protected] 
   # 本地邮件服务器发邮件 
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30 
   router_id LVS_RR 
} 
# vrrp_instance 是一组逻辑分组的 VIP,可以写多个 
vrrp_instance VI_1 { 
    state BACKUP  
    interface ens33 # 实例工作的网络接口 
    virtual_router_id 55 # VRRP 路由 ID 实例,每个实例是唯一的 
    priority 90 # 优先级,备服务器设置 90 
    advert_int 1 # 指定 VRRP 心跳包通告间隔时间,默认 1 秒 
    # VRRP 验证块 
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    # VIP 定义块 
    virtual_ipaddress { 
        192.168.31.55/24 
    } 
} 
vrrp_instance VI_2 { 
    state MASTER     
    interface ens33 
    virtual_router_id 56  
    priority 100    
    advert_int 1    
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress { 
        192.168.31.56/24 
    } 
} 
 
virtual_server 192.168.31.55 3306 { 
    delay_loop 6 
	lb_algo rr 
    lb_kind DR 
    protocol TCP 
    real_server 192.168.31.9 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口  
            connect_timeout 3  # 连接远程服务器超时时间 
            nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
    real_server 192.168.31.10 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口 
            connect_timeout 3  # 连接远程服务器超时时间 
            nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
} 
virtual_server 192.168.31.56 3306 { 
    delay_loop 6 
    lb_algo rr 
    lb_kind DR 
    protocol TCP 
    real_server 192.168.31.9 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口 
            connect_timeout 3  # 连接远程服务器超时时间 
            nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
	real_server 192.168.31.10 3306 { 
        TCP_CHECK { 
            connect_port 3306 #连接远程服务器的 TCP 端口 
            connect_timeout 3  # 连接远程服务器超时时间 
            nb_get_retry 3 # 最大重试次数 
            delay_before_retry 3 # 连续两个重试之间的延迟时间 
        } 
    } 
} 



启动keepalived

#systemctl start keepalived
设置开机启动
#systemctl enable keepalived


查看lvs状态
#ipvsadm -Ln


在mysql-slave服务器上写脚本
# vi lvs-dr-real.sh

#!/bin/bash 
  VIP1=192.168.31.55 
  VIP2=192.168.31.56
  NIC1="lo:0" 
  NIC2="lo:1" 
 
case $1 in 
    start) 
        echo 1 > /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/all/arp_announce 
        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
 
        ifconfig $NIC1 $VIP1 netmask 255.255.255.255 broadcast $VIP1 up 
        ifconfig $NIC2 $VIP2 netmask 255.255.255.255 broadcast $VIP2 up 
 
        route add -host $VIP1 dev $NIC1 
        route add -host $VIP2 dev $NIC2 
		
		;; 
    stop) 
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore 
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce 
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce 
       
        ifconfig $NIC1 down 
        ifconfig $NIC2 down 
		;; 
    status) 
        if ifconfig $NIC1 |grep $VIP1 &> /dev/null; then 
            echo "$NIC1 is configured." 
        else 
            echo "$NIC1 not configured." 
        fi 
 
        if ifconfig $NIC2 |grep $VIP2 &> /dev/null; then 
            echo "$NIC2 is configured." 
        else  
            echo "$NIC2 not configured." 
        fi    
        ;; 
    *) 
        echo "Usage: $0 {start|stop|status}" 
        exit 1 
esac
		
		
		
		
		
		
		
		
		
		
		
		
		
		
启动脚本
#bash lvs-dr-real.sh start

猜你喜欢

转载自blog.csdn.net/qq_28710983/article/details/80938245
今日推荐