zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    addEventListener、onclick和jquery的bind()、click()
    JQuery的click、bind、delegate、off、unbind
    JS的Scope
    JS对象深入剖析
    IP查找所属网段
    C#类的成员初始化顺序
    C#操作XML的完整例子——XmlDocument篇
    【开发实例】C#调用SAPI实现语音合成的两种方法
    C#打包制作安装程序过程全记录
    C# 仿制QQ弹出新闻消息框
  • 原文地址:https://www.cnblogs.com/coder306/p/13087687.html
Copyright © 2011-2022 走看看