keepalived+lvs+mysql实现负载均衡

来源:互联网 发布:imac怎么关软件 编辑:程序博客网 时间:2024/05/16 16:05
lvs+keepalived+mysql的HA(keepalived是做高可用的)


准备2台机器:node1、node2  共4个网卡(每台2个),4个ip地址

备注:

      node1-->eth1、node2--->eth1是keepalived,node1--->eth0、node2--->eth0是真实服务器

      node1-----》192.168.1.101

      node2-----》192.168.1.102

      vip---------->192.168.1.200



1\\如果已经使用过LVS,那么重置LVS
 环境:# yum install  kernel-devel openssl openssl-devel -y
先安装:#yum  install  ipvsadm -y
在2台机器上都执行:
ipvsadm -C
ipvsadm -Ln


2\\开始安装keepalived (node1和node2都要安装)
执行:#yum  install keepalived -y


3\\node1和node2,编辑keepalived.conf文件(路径:vi /etc/keepalived/keepalived.conf)
修改前先备份:cp /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.backup.conf
#vi /etc/keepalived/keepalived.conf
通过学习:man keepalived.conf来更改配置文件
内容见备注,----注意:虚拟服务器端口号要和真实服务器的端口号一致
即:192.168.1.200:3306 --------》
real server 192.168.1.101:3306   real server 192.168.1.102:3306


4\\启动keepalived(node1和node2)
#service keepalived start
查看启动日志:
# tail  /var/log/messages


5\\查看虚拟网卡
#ifconfig


6\\测试单个keepalived运行是否正常
java访问虚拟网卡ip:192.168.1.200
当关掉node1后,如果ifconfg查看node2是正常,那么说明成功了


7\\在真实服务器上配置lvs,在keepalived机器上不用配置lvs(查看二\\)
在真实服务器RS(后端服务器,目前有2个:192.168.1.101和192.168.1.102)中执行以下命令,
         更改linux的内核参数映射
# 修改arp为不广播、不响应,隐藏RS上的VIP
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 


#真实服务器上,再添加RS上的VIP,并在VIP上添加虚拟路由,虚拟路由的IP必须与VIP相同(可以不执行)

ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200
route add -host 192.168.1.200 dev lo:0

目的是为了提供以下服务虚拟ip

   virtual_ipaddress {

192.168.1.200/24 dev eth1 label eth1:1 #外部访问的虚拟ip

    }

本文没有使用,原因:测试不通过



8\\启动keepalived(192.168.1.101和192.168.1.102),测试是否可以正常
编写java代码访问:虚拟服务器—》http://192.168.1.200:3306/
关闭一个keepalived和mysql后查看启动是否正常----》查看命令:ipvsamd –Ln  




关闭当前mysql后----》java程序访问mysql再查看----》http://192.168.142.200:8080/
同时执行命令:#ifconfig查看
9\\注意:启动keepalived一定要先启动master,再启动backup!!!!!
10\\如果不能正常使用,那么先停掉master,再重启master!!!即可



备注:lvs+keepalived+mysqlkeepalived配置

【【主:node2】】

! Configuration File for keepalived

#guration File for keepalived

#global define

global_defs {

router_id LVS_CNC_1

}

vrrp_sync_group VGM {

group {

VI_CACHE

}

}

################################################################

# vvrp_instance define #

################################################################

vrrp_instance VI_CACHE {

state MASTER    #这台是主,另一台设置为BACKUP

interface eth0

lvs_sync_daemon_inteface eth0

virtual_router_id 51

priority 180     #从的值必须比180

advert_int 5

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.200

}

}

##############################################################

# virtual machine setting #

##############################################################

# setting port 3306 forward

virtual_server 192.168.1.200 3306 { #设置虚拟lvs服务,VIP PORT

delay_loop 6

lb_algo wlc  #调度算法wlc

lb_kind DR  #lvs的模式,NAT

persistence_timeout  20 #会话保持时间,单位是秒。

protocol TCP

real_server 192.168.1.101 3306 {  ## Real Server设置,3306就是MySQL连接端口

weight 100     #从的值必须比主的小

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

real_server 192.168.1.102 3306 {

weight 100

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

【【从node1】】

! Configuration File for keepalived

#guration File for keepalived

#global define

global_defs {

router_id LVS_CNC_2

}

vrrp_sync_group VGM {

group {

VI_CACHE

}

}

################################################################

# vrrp_instance setting #

################################################################

vrrp_instance VI_CACHE {

state BACKUP  

interface eth1

lvs_sync_daemon_inteface eth1 #必须使用eth1,不能使用eth0

virtual_router_id 51

priority 150

advert_int 5

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.200

}

}

##############################################################

# virtual server setting #

##############################################################

# setting port 3306 forward

virtual_server 192.168.1.200 3306 {

delay_loop 6

lb_algo wlc

lb_kind DR

persistence_timeout 30  #会话保持时间,单位是秒。

protocol TCP

real_server 192.168.1.101 3306 {

weight 100

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

real_server 192.168.1.102 3306 {

weight 100

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

【jdbc访问mysql

1、添加mysql驱动jar

2、编写代码类:TestLvxMysql.java
import java.sql.Connection;
import java.sql.DriverManager;
/**
 * Document:本类作用---->测试负载均衡
 * User: yangjf
 * Date: 2016/8/2  9:38
 */
public class TestLvxMysql {
    public static void main(String[] args) {
        try{
            Connection conn=null;
            for(inti=0;i<2000;i++){
                conn=getConn();
                System.out.println(i+"  "+conn);
                    releaseConn(conn);
                Thread.sleep(1000);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static Connection getConn(){
     Connection conn=null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection("jdbc:mysql://192.168.1.200:3306/my_test?useUnicode=true&characterEncoding=UTF-8","root","123456");
        }catch (Exception e){
            e.printStackTrace();
        }
     return conn;
    }
    public static void releaseConn(Connection conn){
        try{
            if(conn!=null){
                conn.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

测试结果:

(1)当停止node1或者node2mysql服务后,jdbc仍然可以获取连接,说明配置成功!!

(2)当停止node1keepalived master或者node2keepalived backup服务后,jdbc仍然可以获取连接,说明配置成功!

注意:停止mysql服务后,中间有3s左右的等待时间!!

      停止keepalived 服务后,中间有5s左右的等待时间!!

参考:http://www.keepalived.org/pdf/sery-lvs-cluster.pdf



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝卖的宝贝电话写错了怎么办 邮政快递都揽件了一直不运输怎么办 应用宝里面的安装包安装不了怎么办 苹果平板电脑充电接口坏了怎么办 读书郎平板电脑开不了机怎么办 平板电脑死机开不了机了怎么办 欧灵平板电脑忘记图密解锁怎么办 淘宝没货发给人被投诉了怎么办 淘宝店铺既不能开又不能注销怎么办 妻子被骗五万疑似被洗脑我该怎么办 奖虫账号和密码不匹配怎么办 开淘宝店余额宝里的钱怎么办 京东找不到所有宝贝的链接了怎么办 淘宝店链接改了标题没流量怎么办 淘宝手淘搜索自然流量少怎么办 4个月宝贝不食欲下降怎么办 淘宝商家预售时间到了不发货怎么办 淘宝修改类目被处置管控了怎么办 淘宝换手机号是已经注册了的怎么办 闲鱼违规把我淘宝店铺冻结了怎么办 开网店店主想买自己的东西怎么办 以前用微博登录头条的账号怎么办 公众号注册提示邮箱已被占用怎么办 学信网注册时出现邮箱被占用怎么办 手机淘宝店铺接不到买家消息怎么办 买了东西淘宝店铺没了怎么办 淘宝店铺直播间虚假交易违规怎么办 手机淘宝退款物流单号填错了怎么办 淘宝评价删除了卖家没有返现怎么办 想摆摊卖麻辣烫不知怎么摆怎么办 在淘宝卖东西买家退款不退货怎么办 在闲鱼网上买东西被骗了怎么办 开通花呗的手机号不用了怎么办 饿了么开业第一天没单量怎么办 淘宝新开店铺没有人来呀怎么办 刚开的淘宝店铺没有人买东西怎么办 开了一家龙虾店生意很淡怎么办? 新买的皮质小白鞋有点板脚怎么办 手机无效安装包与系统不兼容怎么办 发好的海参放进速冻后变小了怎么办 厨房地砖下面的下水管漏水怎么办?