最近用HAproxy+keepalived+mysql复制测试高可用性Linux系统集群。
   HAProxy是一款免费的提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。
   Keepalived主要作用是LoadBalance master和LoadBalance backup之间的健康检查,实现故障转换。
   Mysql Replication主要作用是提高mysql并处理数据的能力以及实现容灾备份的作用。

项目拓扑图:

Haproxy服务器及其IP地址规划:

项目实施:

1.Mysql主从复制配置。

1)在master服务器上创建mysql用户(授权复制账户)。
grant replication slave on *.* to'rep'@'192.168.1.244'identified by 'rep123';
2)编辑master服务器的mysql配置文件my.cnf。
server-id = 1 //指定服务器的ID
log-bin = mysql-bin //开启二进制日志
binlog-ignore = mysql //忽略mysql和information_schema 数据库
binlog-ignore = information_schema
binlog-do-db = blog    //同步数据库,默认同步所有数据库
3)查看master状态。
mysql> show master status;
+---------------+----------+--------------+--------------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+---------------+----------+--------------+--------------------------+
| binlog.022343 |   339244 | blog         | mysql,information_schema |
+---------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)
4)在slave端创建数据库blog,导出master端的blog库,导入到此库,并修改mysql主配置文件my.cnf server-id = 2 重启mysql数据库。
mysql> change master to-> master_host='192.168.1.243',-> master_port=3306,-> master_user='rep',-> master_password='rep123',-> master_log_file='binlog.022343',-> master_log_pos=339244;
5)mysql主从同步测试,show slave status\G;能看到Slave_IO_Running和Slave_SQL_Running都为YES即可。
mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.243Master_User: repMaster_Port: 3306Connect_Retry: 60Master_Log_File: binlog.022343Read_Master_Log_Pos: 339110Relay_Log_File: relaylog.005481Relay_Log_Pos: 339244Relay_Master_Log_File: binlog.022343Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB: mysql,test,information_schemaReplicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 339110Relay_Log_Space: 339244Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0
1 row in set (0.00 sec)

2.Haproxy安装及其配置,master和backup安装配置都是完全一样的。

wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
tar -zxvf haproxy-1.4.24.tar.gz
cd haproxy-1.4.24
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
cd /usr/local/haproxy
mkdir conf logs   //在此目录下面建立conf,logs目录分别存放HAproxy的配置文件,PID文件和日志文件。
vim conf/haproxy.conf
globalmaxconn 50000chroot /usr/local/haproxyuid 99gid 99daemonquietnbproc  2pidfile /usr/local/haproxy/logs/haproxy.pid#debug
defaultslog     globalmode    httpoption  httplog   #每次请求完毕后主动关闭http通道option  dontlognull #不记录健康检查的日志信息option forwardforoption redispatchoption abortoncloseretries 3log 127.0.0.1 local3maxconn 20000contimeout      5000clitimeout      50000srvtimeout      50000
listen 192.168.1.236bind *:80mode httpstats uri /admin                    #后端服务器状态查看地址stats auth admin:admin             #状态查看页面登陆帐号密码balance source   #调度算法,source是和nginx的ip_hash同理,解决session问题option httpcloseoption forwardfor
server web1 192.168.1.248:80 weight 5 check inter 2000 rise 2 fall 5
server web2 192.168.1.249:8080 weight 5 check inter 2000 rise 2 fall 5
#启动Haproxy服务
/usr/local/haproxy/sbin/haproxy -f haproxy.conf
#haproxy启动脚本
#!/bin/bash
BASE_DIR="/usr/local/haproxy"
ARGV="$@"
start()
{
echo "START HAPoxy SERVERS"
$BASE_DIR/sbin/haproxy -f $BASE_DIR/conf/haproxy.conf
}
stop()
{
echo "STOP HAPoxy Listen"
kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid)
echo "STOP HAPoxy process"
kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid)
}
case $ARGV in
start)
start
ERROR=$?
;;
stop)
stop
ERROR=$?
;;
restart)
stop
start
ERROR=$?
;;
*)
echo "hactl.sh [start|restart|stop]"
esac
exit $ERROR

3.Haproxy开启系统日志支持。

vim /etc/syslog.conf
#添加:
local3.*        /var/log/haproxy.log
local0.*        /var/log/haproxy.log
vim /etc/sysconfig/syslog
#修改:
SYSLOGD_OPTIONS="-r -m 0"
#重新启动syslog服务
/etc/init.d/syslog restart

4.Keepalived的安装配置。

wget http://www.keepalived.org/software/keepalived-1.2.5.tar.gz
ln -s /usr/src/kernels/2.6.18-164.el5-x86_64/ /usr/src/linux
tar -zxvf keepalived-1.2.5.tar.gz
cd keepalived-1.2.5
./configure --prefix=/usr/local/keepalived
make && make install
cp keepalived/etc/init.d/keepalived.rh.init /etc/init.d/keepalived
chmod +x /etc/init.d/keepalived
cp keepalived/etc/init.d/keepalived.sysconfig /etc/sysconfig/keepalived
chkconfig --add keepalived
chkconfig --level 35 keepalived on
cp /usr/local/keepalived/sbin/keepalived /bin/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#Haproxy master配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {shifeng_zhang88@163.com}notification_email_from shifeng_zhang88@163.comsmtp_server smtp.163.comsmtp_connect_timeout 30router_id LVS_Master
}
vrrp_script chk_http_port {script  "/etc/keepalived/check_haproxy.sh"interval        5       #脚本执行间隔weight         -5       #执行脚本后优先级变更:5表示优先级+5;-5则表示优先级-5
}
vrrp_instance VI_A {state MASTERinterface eth0virtual_router_id 50priority 100advert_int 1authentication {auth_type PASSauth_pass sfzhang1109}
track_script {chk_http_port}virtual_ipaddress {192.168.1.236    #haproxy虚拟IP}
}
#Haproxy backup配置文件只需改变state和priority的值
state BACKUP
priority 50
#启动keepalived服务
/etc/init.d/keepalived start

5.编辑check_haproxy.sh脚本,需要将haproxy启动脚本放到/etc/init.d/里面。

vim /etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/etc/init.d/haproxy restart
echo "Start haproxy" &> /dev/null
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
echo "Stop keepalived" &> /dev/null
fi
fi
#chomd +x /etc/keepalived/check_haproxy.sh

6.Haproxy+Keepalived高可用性测试。

1)Haproxy+Keepalived 高可用测试。

测试方法:停止master的keepalived服务,查看备用的keepalived的日志发现当主节点宕机时,备用节点角色会立即变为主节点,启用VIPS协议,并把VIP地址立刻绑定到eth0网卡上面,当主节点恢复时则做相反的工作。

2)Haproxy+Keepalived负载均衡测试

测试方法:当客户端访问VIP的时候,haproxy根据设置的调度算法和权重把访问请求分发到后端的WEB服务器上面,从而实现了负载均衡的功能。

3)Haproxy+Keepalived 故障转移测试

测试方法:当后端的WEB服务器down机时,haproxy会自动检测到并把请求发送到正常的服务器上面,通过haproxy监控页面(http://192.168.1.235/admin)可以查看。

说明:(希望大家提出宝贵的意见)

1)拓扑图只是项目的一个雏形,后期还要添加监控服务器和邮件等服务器。

2)Mysql主库负责用户数据的写入,slave负责用户数据的读取和数据的备份等,除了要监控mysql主从外还要监控Seconds_Behind_Master选项,以免产生主从数据不同步或者延时。

      3)当WEB的负载很大的时候,可以在haproxy添加多台物理机即可,并考虑把项目的图片分离出来做成单独的图片服务器。


转载于:https://blog.51cto.com/sfzhang88/1229620

用HAproxy+keepalived+mysql Replication 构建基于企业级负载均衡相关推荐

  1. mysql流行的四种高可用架构之:Keepalived+Mysql Replication

    关于MySQL-HA,目前有很多种解决方案,目前互联网上用的较多的是Keepalived+Mysql Replication组合.MMM+Mysql Replication组合.Heartbeat+D ...

  2. 用samba服务构建基于企业级的文件共享服务

    用samba服务可轻松构建基于企业级的文件共享服务,配置起来比windows的NTFS+共享权限更简单,更容易,而且samba可以直接通过内核和用户交互数据,访问效率更高. ------------- ...

  3. 基于nginx负载均衡的慢性病专家系统

    摘要 随着互联网技术和国内医疗行业持续高速地发展,管理员为了能够更加方便地管理用户预约挂号和医生诊疗,慢性病专家系统被开发出来的目的是为了能够更加方便管理用户预约挂号和医生诊疗,一个良好的慢性病专家系 ...

  4. 企业级负载均衡如何实现

    转载自  企业级负载均衡如何实现 负载均衡简介 首先,我们来了解一下什么是负载均衡: 在一个大型网站中,在线用户有时可能有几千个甚至上万个之多.如果一个用户的请求需要服务使用0.02秒来处理,那么该服 ...

  5. 企业级负载均衡解决方案之三:唯品会四层负载均衡解决方案VGW

    一.前言 和美团点评一样,唯品会也使用DPDK框架来开发自己的四层负载均衡器VGW.其基本技术和文章<企业级负载均衡解决方案之二:美团点评高性能四层负载均衡器MGW>里面提到的技术方案基本 ...

  6. keepalive+nginx实现负载均衡高可用_超详细的LVS+keepalived+nginx实现高性能高可用负载均衡集群教程...

    概述 前面已经介绍了前两部分内容,下面主要介绍在nginx服务器方面的配置和测试整个集群是否可用. 在realserver端配置VIP 1.两台nginx服务器都要执行下面脚本: #vi /etc/r ...

  7. ngnix+keepalived 实现N主高可用负载均衡web群集

    ngnix+keepalived 实现N主高可用负载均衡web群集 思路: 总结一下最近学习的nginx+keepalived 的负载均衡架构,发现linux的群集系统都是负载均衡层加服务器群组层,实 ...

  8. keepalived+lvs实现高可用的负载均衡

    ############################################### keepalived keepalived+lvs实现高可用的负载均衡 测试 ############# ...

  9. Keepalived+LVS-DR模式配置高可用负载均衡集群

    环境: 虚拟机:VMware Workstation 操作系统:CentOS 5.5 一.keepalived+lvs-DR模式配置高可用负载均衡 拓扑如下: 二.服务器ip配置信息 1. ip_lb ...

最新文章

  1. layui导入 加载动画_厉害了!这个免费神器帮你无脑做施工动画
  2. android菜鸟学习笔记27----Fragment的简单使用
  3. 将原生SQL功能Hibernate到您的Spring Data Repository中
  4. redis 计数 java_redission计数器实现,redisTemplate计数器
  5. 使用计算机教学的意义,信息技术在教学中的作用
  6. 笔记:J2EE核心模式(待补充)
  7. 阿里问题定位神器 Arthas 操作实践,定位线上BUG,超给力
  8. 不服就干!抖音要用多闪挑战微信,但官网瞬间被封
  9. 01.Elasticsearch安装
  10. [Java] 蓝桥杯ALGO-58 算法训练 字串逆序
  11. 【运动学】基于matlab Singer模型算法机动目标跟踪【含Matlab源码 1157期】
  12. 碾压x雷!分享这款不限速免费下载神器,能在任何操作系统上使用
  13. Twaver-HTML5基础学习(13)连线(Link)连线的绑定与展开
  14. 控制台调出Servers
  15. Android市场-开发者账号注册等-移动开放平台网址收藏
  16. 公关作用下的品牌建设
  17. c语言录入信息后无法显示桌面,输入法在桌面不显示,怎么修改能显示在桌面任 – 手机爱问...
  18. 思科交换机 DHCP 服务配置
  19. libusb函数说明
  20. CSS 外边距重叠及防止方法

热门文章

  1. KDTable的列绑定F7控件方法
  2. Java单例模式:饿汉与懒汉区别
  3. ACL控制访问列表原理+实验
  4. HDU - 6438(贪心+思维)
  5. 查找python项目依赖并生成requirements.txt
  6. S5700三层交换机 复杂网络环境设置默认路优先级实战
  7. java 图片灰度化
  8. Chapter 17 高级进程间通信
  9. 用Everything搜索指定的路径
  10. python基础知识~ 函数详解2