keepalived+lvs+mysql实现负载均衡
来源:互联网 发布:imac怎么关软件 编辑:程序博客网 时间:2024/05/16 16:05
准备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
}
本文没有使用,原因:测试不通过
编写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+mysql的keepalived配置
【【主: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或者node2的mysql服务后,jdbc仍然可以获取连接,说明配置成功!!
(2)当停止node1的keepalived master或者node2的keepalived backup服务后,jdbc仍然可以获取连接,说明配置成功!
注意:停止mysql服务后,中间有3s左右的等待时间!!
停止keepalived 服务后,中间有5s左右的等待时间!!
参考:http://www.keepalived.org/pdf/sery-lvs-cluster.pdf
- lvs+keepalived+mysql cluster实现负载均衡
- keepalived+lvs+mysql实现负载均衡
- LVS+Keepalived实现mysql的负载均衡
- LVS + keepalived 实现负载均衡
- LVS+Keepalived实现负载均衡
- LVS+Keepalived实现负载均衡
- LVS+keepalived 实现负载均衡
- lvs+keepalived实现负载均衡
- keepalived+lvs实现负载均衡
- lvs+keepalived 实现负载均衡
- keepalived+lvs+mysql cluster架构实现负载均衡
- LVS+Keepalived实现MySQL从库读操作负载均衡
- LVS+Keepalived实现MySQL从库读操作负载均衡
- LVS+Keepalived实现MySQL从库读操作负载均衡
- centos7 LVS+Keepalived实现mysql的负载均衡
- MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_4(Lvs+Keepalived)
- LVS+keepalived负载均衡
- LVS+keepalived负载均衡
- 文章标题
- 搜索引擎那些你不知道的事
- redis常用命令
- Unicode的解救方案
- 欢迎使用CSDN-markdown编辑器
- keepalived+lvs+mysql实现负载均衡
- html5 文档元素 布局
- 除数不能整除,向上取整
- 8.2台风来
- ios开发 之 设置多种文字颜色/背景色/文字下划线/行间距
- 优化Linux内核sysctl.conf参数来提高服务器并发处理能力
- 为什么叫欧文德鲁大叔
- leetcode 300. Longest Increasing Subsequence
- assignment discards ‘const’ qualifier from pointer target type的解决