Mysql集群

Mysql集群

配置mysql主主复制

修改my.cnf文件

192.168.128.151mysql配置

server-id=11   #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log_bin=mysql-bin   #开启二进制日志
auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL
binlog-ignore=mysql   #忽略mysql库【我一般都不写】
binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】
replicate-do-db=shiro  #要同步的数据库,默认所有库


192.168.128.152mysql配置

server-id=12
log_bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=shiro


重启systemctl restart mariadb.service

配置192.168.128.151主从复制

192.168.128.152中创建一个192.168.128.151主机中可以登录的MySQL用户

MariaDB [(none)]> create user mysql2
mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
mysql>FLUSH PRIVILEGES;


查看192.168.128.152二进制日志

mysql>show variables like '%log_bin%';
MariaDB [(none)]> show master status;


告知192.168.128.151二进制名称和位置

MariaDB [mysql]> change master to
    -> master_host='192.168.128.151',
    -> master_user='root',
    -> master_password='root',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=245;


查看结果

MariaDB [mysql]> slave start
MariaDB [mysql]> show slave statusG

配置192.168.128.152主从复制

同上

image.png 

Haproxy集群

Haproxy介绍

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性负载均衡,以及基于TCPHTTP的应用程序代理

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

包括 GitHubBitbucket[3]Stack Overflow[4]RedditTumblrTwitter[5][6] Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy

国内生产环境上使用Haproxy的公司很多,例如淘宝的CDN系统CDN的全称是Content Delivery Network,即内容分发网络

 

 

安装Haproxy

下载

http://pkgs.fedoraproject.org/repo/pkgs/haproxy/
[root@localhost home]# wget http://pkgs.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.7.8.tar.gz/sha512/e1d65c8a4607c01d52628f36f8c7342096267130a0f949474746f571158e4f795281f78765004c214a0527f74ce180760f9cc910d3650d30026776076d721c0c/haproxy-1.7.8.tar.gz

image.png

解压

[root@localhost home]# tar -zxvf haproxy-1.7.8.tar.gz

安装

 [root@A local]# cd haproxy-1.6.9
[root@A local]# make  TARGET=linux3100 CPU=x86_64  PREFIX=/usr/local/haprpxy  #编译  uname -r #查看系统内核版本号
[root@A local]# make install PREFIX=/usr/local/haproxy  #安装
 
#数说明:
#TARGET=linux3100
#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26
#kernel 大于2.6.28的用:TARGET=linux2628
#CPU=x86_64   #使用uname -r查看系统信息,如x86_64 x86_64 x86_64 GNU/Linux,此时该参数就为x86_64
#PREFIX=/usr/local/haprpxy   #/usr/local/haprpxy为haprpxy安装路径


设置Haproxy

mkdir -p  /usr/local/haproxy/conf  #创建配置文件目录
mkdir -p /etc/haproxy  #创建配置文件目录
touch  /usr/local/haproxy/conf/haproxy.cfg  #创建配置文件
ln -s  /usr/local/haproxy/conf/haproxy.cfg   /etc/haproxy/haproxy.cfg  #添加配置文件软连接
cp -r  /home/haproxy-1.7.8 /examples/errorfiles/usr/local/haproxy/errorfiles  #拷贝错误页面
ln -s  /usr/local/haproxy/errorfiles  /etc/haproxy/errorfiles  #添加软连接
mkdir -p  /usr/local/haproxy/log  #创建日志文件目录
touch  /usr/local/haproxy/log/haproxy.log  #创建日志文件
ln -s  /usr/local/haproxy/log/haproxy.log  /var/log/haproxy.log  #添加软连接
cp /home/haproxy-1.7.8/examples/haproxy.init  /etc/rc.d/init.d/haproxy  #拷贝开机启动文件
chmod +x  /etc/rc.d/init.d/haproxy  #添加脚本执行权限
chkconfig haproxy on  #设置开机启动
ln -s  /usr/local/haproxy/sbin/haproxy  /usr/sbin  #添加软连接

配置haproxy.cfg参数

cp  /usr/local/haproxy/conf/haproxy.cfg   /usr/local/haproxy/conf/haproxy.cfg-bak  #备份
vi  /usr/local/haproxy/conf/haproxy.cfg  #编辑,修改


haproxy.cfg文件内容

global
    log         127.0.0.1 local2         //日志定义级别
    chroot      /var/lib/haproxy         //当前工作目录
    pidfile     /var/run/haproxy.pid     //进程id
    maxconn     4000                     //最大连接数
    user        haproxy                  //运行改程序的用户
    group       haproxy
    daemon                               //后台形式运行
    stats socket /var/lib/haproxy/stats
 
defaults
    mode                    tcp            //haproxy运行模式(http | tcp | health)
    log                     global
    option                  dontlognull
    option                  redispatch     //serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    retries                 3              //三次连接失败则服务器不用
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s            //连接超时
    timeout client          1m             //客户端超时
    timeout server          1m             //服务器超时
    timeout http-keep-alive 10s
    timeout check           10s            //心跳检测
    maxconn                 600            //最大连接数
 
listen stats                               //配置haproxy状态页(用来查看的页面)
    mode http
    bind :8888
    stats enable
    stats hide-version                    //隐藏haproxy版本号
stats uri     /haproxyadmin?stats     //一会用于打开状态页的uri
    stats realm   Haproxy Statistics     //输入账户密码时的提示文字
    stats auth    admin:admin             //用户名:密码
 
frontend  main
bind 0.0.0.0:3306                     //使用3306端口。监听前端端口【表示任何ip访问3306端口都会将数据轮番转发到mysql服务器群组中】
    default_backend             mysql     //后端服务器组名
 
backend mysql
    balance     leastconn                 //使用最少连接方式调度
    server mysql1 192.168.128.151:3306 check port 3306 maxconn 300
    server mysql2 192.168.128.152:3306 check port 3306 maxconn 300

 

访问http://192.168.128.155:8888/haproxyadmin?stats

 

错误问题解决

错误:haproxy: 第 26 行:[: =: 期待一元表达式
[ ${NETWORKING} = "no" ] && exit 0
[ "$NETWORKING" = "no" ] && exit 0
 
错误二:
# service haproxy start
Starting haproxy: [ALERT] 118/194702 (1611) : [/usr/sbin/haproxy.main()] Cannot chroot(/usr/share/haproxy).
                                                           [失败]
如果报以上的错误,可以这样解决:
手动建立目录 :  mkdir /usr/share/haproxy
 
另外,如果有错,可以尝试使用调试启动命令:
haproxy -f haproxy.cfg -d
 
另外,如果在安装中,需要使用scp命令时,但报:-bash: scp: command not found
解决:yum install openssh-clients

 

负载均衡软件对比(LVSNginxHAproxy)

负载均衡软件:比较常见的有LVS、Nginx、HAproxy等,其中LVS是建立在四层协议上面的,而另外Nginx和HAproxy是建立在七层协议之上的,下面分别介绍关于

LVS:使用集群技术和linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

LVS的特点是:

1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生;

2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;

3、工作稳定,自身有完整的双机热备方案;

4、无流量,保证了均衡器IO的性能不会收到大流量的影响;

5、应用范围比较广,可以对所有应用做负载均衡;

6、LVS需要向IDC多申请一个IP来做Visual IP,因此需要一定的网络知识,所以对操作人的要求比较高。

Nginx的特点是:

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

2、Nginx对网络的依赖比较小;

3、Nginx安装和配置比较简单,测试起来比较方便;

4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;

5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

7、Nginx能支持http和Email,这样就在适用范围上面小很多;

8、不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法

HAProxy的特点是:

1、HAProxy是工作在网络7层之上。

2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作

3、支持url检测后端的服务器出问题的检测会有很好的帮助。

4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现

5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。

6、HAProxy可以对mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。

 




查看原文:http://www.coder306.cn/?p=173
原文地址:https://www.cnblogs.com/coder306/p/13087687.html