zoukankan      html  css  js  c++  java
  • mysql02

    Haproxy 负载均衡搭建

    一主二从一个负载均衡节点

    主:192.168.239.140
    负载均衡:192.168.239.141
    从一:192.168.239.142
    从二:192.168.239.144

    1.创建用户,并赋予权限
    master

    create user 'test'@'192.168.239.%' identified by 'test';
    grant all on *.* to 'test'@'192.168.239.%';

    编译

    yum install gcc-c++
    
    make TARGET=linux26(内核版本号)
    make install PREFIX=/usr/local/haproxy

    创建配置文件

    cd /usr/local/haproxy
    mkdir conf
    vi haproxy.cnf

    如下

     1 global
     2     daemon     # 后台方式运行
     3     nbproc 1
     4           pidfile /usr/local/haproxy/conf/haproxy.pid
     5 
     6 defaults
     7     mode tcp  #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
     8     retries 2    #两次连接失败就认为是服务器不可用,也可以通过后面设置
     9     option redispatch    #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    10     option abortonclose    #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    11     maxconn 4096   #默认的最大连接数
    12     timeout connect 5000ms   #连接超时
    13     timeout client 30000ms      #客户端超时
    14     timeout server 30000ms     #服务器超时
    15     #timeoutcheck 2000    #=心跳检测超时
    16     log 127.0.0.1 local0 err#[err warning info debug]
    17 
    18 #test1
    19 listen test1   #这里是配置负载均衡,test1是名字,可以任意
    20     bind 0.0.0.0:33060        #这里是监听的IP地址和端口,端口号可以在0-65535之间,要避免端口冲突
    21     mode tcp    #连接的协议,这里是tcp协议
    22     #maxconn 4086
    23     #log 127.0.0.1 local0 debug
    24     server s1 192.168.239.142:3306    #负载的机器
    25     server s2 192.168.239.144:3306   #负载的机器,负载的机器可以有多个,往下排列即可

    启动haproxy

    ../sbin/haporxy -f /usr/local/haproxy/conf/haproxy.cnf

    haproxy算法

    有如下8种
    一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
    二、static-rr,表示根据权重;
    三、leastconn,表示最少连接者先处理;
    四、source,表示根据请求源IP;
    五、uri,表示根据请求的URI;
    六、url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name
    七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
    八、rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

    例:balance source

    监控

    vi haproxy.cnf

    listen admin_stats
        bind:0.0.0.0:8888
        mode http
        stats uri /test_haproxy
        stats auth admin:admin

    http://192.168.239.141:8888/test_haproxy  

      username:admin password:admin

    Status   not check 方法

    server s1 192.168.239.142:3306 check port 3306
    server s2 192.168.239.144:3306 check port 3306

    Keepalived高可用集群搭建

    1.主主复制

    主1 192.168.239.140
    主2 192.168.239.145

    首先关闭防火墙

    service iptables stop

    主2

    show master status;
    
    file
    mysql-bin.000009 Position 154

    主1

    change master to master_host = '192.168.239.145',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000009',master_log_pos=154
    
    start slave

    show master status

    file
    mysql-bin.000008 Position 154

    主2

    change master to master_host = '192.168.239.145',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000009',master_log_pos=154

    start slave;

    2.Keepalive搭建

    上传keepalive 的压缩包

    1 tar -zxvf keepalived-1.3.5.tar.gz
    2 cd keepalived
    3 yum install gcc-c++
    4 yum install openssl openssl-devel
    5 
    6 ./configure
    7 make && make install

    配置文件及可执行文件位置

    配置文件
    cd /usr/lcoal/etc/keepalived
    vi keepalived.conf

    可运行程序
    pwd
    /usr/local/sbin

    主1

    vi keepalived.conf

    global_defs {
         router_id LVS_MASTER
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.239.150/24   //虚拟ip
             }
    }

    主2

    global_defs {
         router_id LVS_SLAVE
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.239.150/24  //虚拟ip
             }
    }

    启动

    cd ../../sbin
    ./keepalived -D -f /usr/local/etc/keepalived/keepalived.conf

    手动把主1 kill -9 keepalive的id 号后, 虚拟ip会自动转换绑定到主2上

    配置文件的信息

     1 global_defs {         
     2      router_id LVS_SLAVE  #router_id  安装keeplieved设置不同即可
     3 }
     4 
     5 vrrp_instance VI_1 { 
     6     state BACKUP      #MASTER 和 BACKUP 两种状态
     7     interface eth0    
     8     virtual_router_id 51   #虚拟路由id节点
     9     priority 100    #抢占主节点的概率
    10     advert_int 1          #发送的时间间隔(秒)
    11     authentication {
    12         auth_type PASS   #授权
    13         auth_pass 1111
    14     }
    15     virtual_ipaddress {
    16         192.168.239.150/24   #虚拟ip地址,指定地址加到 VI_1的网卡上
    17          }
    18 }


    主节点的选择问题
    priority 的值大的优先

    keepalived配置邮件
    1.在keepalieved配置文件中进行配置
    2.在keepalived调用shell脚本
    3.才用第三方的监控程序

    步骤:

    1.安装postfix

    yum insatll postfix

    cd /etc/postfix
    vi main.cnf  修改配置文件

     1 myhostname = mail.qyy.cn
     2 mydomain = qyy.cn
     3 
     4 myorigin = $myhostname
     5 myorigin = $mydomain
     6 
     7 inet_interfaces = all
     8 
     9 mydestination = $myhostname, $mydomain
    10 
    11 
    12 mynetworks = 192.168.239.0/28 ,127.0.0.0/8
    13 
    14 reply_domains = $mydestination

    service postfix start

    ps-ef |grep master

    2.安装 dovecot

     1 yum install dovecot
     2 
     3 cd /etc/dovecot
     4 
     5 vi dovecot.conf
     6 
     7 protocols = imap pop3 lmtp
     8 
     9 
    10 service dovecot start
    11 
    12 netstat -tunlp | grep 110
    13 
    14 
    15 yum install mail

    3.

     1 新增用户
     2 useradd user1
     3 passwd user1
     4 
     5 useradd user2
     6 passwd user2
     7 
     8 
     9 centos 关闭setlinux
    10 
    11 临时关闭
    12 setenforce 0
    13 
    14 永久关闭
    15 
    16 /etc/setlinux/config
    17 
    18 SELINUX = disabled

    cmd 验证

     1 telnet 192.168.239.140  25
     2 
     3 mail from:uer1@qyy.cn  指定发件人
     4   
     5 rcpt to:user2@qyy.cn   指定接受人
     6 
     7 data  开始编辑发送数据 
     8 
     9 hello
    10 . (发送数据,以点表示结束)
    11 
    12 quit  退出
    13 
    14 
    15 
    16 登陆 user2
    17 su user2
    18 mail
    19 
    20 >N 1 user1@qyy.cn 
    21 &1
    22 
    23 hello

    步骤概要

    service iptables stop
    service postfix start
    service dovecot start

    shell 脚本配置邮件报警

    service mysqld stop

    vi mysql.sh

    1 #!/bin/bash
    2 
    3 nc -w2 localhost 3306
    4 if   [  $? -ne 0   ]
    5 then
    6    echo "mysql's 3306 port is down" | mail root@qyy.cn -s "mysql is down"
    7 fi

    chmod u+x mysql.sh
    yum install nc

    ./mysql.sh

     

    1.通过计划任务进行邮件报警

    1 crontab -e
    2 
    3 */2 * * * * /root/mysql.sh      两分钟执行一次


    crontab -l 查看当前的计划任务

    crontab -r 删除当前的计划任务

    2.删除计划任务,修改配置文件

    vim keeplieved.conf

     4 vrrp_script chk_mysql {
     5       script "/root/mysql.sh"
     6        interval    10
     7 }
     8 
     9 
    10 track_script {
    11       chk_mysql
    12 }

  • 相关阅读:
    gdb 调试器的使用
    vi 的基本操作
    Makefile
    gcc
    动态内存分配
    Linux常用命令
    文件基本操作
    linux的启动配置文件(grub)
    Hello IT
    Val简介(来源维基百科)
  • 原文地址:https://www.cnblogs.com/quyangyang/p/11420769.html
Copyright © 2011-2022 走看看