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
  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/coder306/p/13087687.html
Copyright © 2011-2022 走看看