zoukankan      html  css  js  c++  java
  • 使用mysql服务实现负载均衡

    mysql 长连接(tcp协议)模拟负载均衡

    1.存在member,member的port与mysql服务port一致为3306

    2.vip绑定浮动ip

    3.开启mysql服务:

    
    #service mysqld start(centos6.5)
    
    #systemctl start mysqld (centos7)
    
    

    4.关闭云主机防火墙:

    
    #service iptables stop(centos6.5)
    
    #systemctl stop firewalld(centos7)
    
    

    5.允许mysql服务远程访问,并新建一个数据库

    
    #GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
    
    #create database test
    
    

    6.远程访问mysql

    
    #mysql -u<远程登陆的用户> -p -h<ip> -P<port>
    
    

    Mysql实现负载均衡:

    两台云主机上安装mysql服务,云主机ip分别为:server1:192.168.5.11、server2:192.168.5.12 vip浮动ip:25.0.0.165

    分别创建不同的数据库:
    Server1:

    >mysql -uroot -p
    >create database member1;
    
    

    Server2:

    >mysql -uroot -p
    >create database member2;
    

    客户端测试一下数据库服务:
    Mysql -u root -p 12345 -h 192.168.5.11 -e “show databases;”
    Mysql -u root -p 12345 -h 192.168.5.12 -e “show databases;”
    修改mysql配置文件:
    vi /etc/my.cnf 修改监听端口

    查看haproxy配置文件中是否更新配置

    Vim /var/lib/neutron/lbaas/<pool-id>/conf
    

    使用脚本持续访问mysql

    create_connections.sh
    #!/usr/bin/expect                                                                                                                                                                   
    #配置登陆数据库的端口                                                                                                                                                               
    set vipport 80                                                                                                                                                                      
    #配置登陆数据库的ip地址                                                                                                                                                             
    set vipip 25.0.4.194                                                                                                                                                                
    #配置数据库用户名                                                                                                                                                                   
    set username admin                                                                                                                                                                  
    #配置数据库登陆密码                                                                                                                                                                 
    set password admin                                                                                                                                                                  
                                                                                                                                                                                        
    spawn mysql -h $vipip -u $username -P $vipport -p                                                                                                                                   
    #spawn ssh -p $port oracle@$oracleip                                                                                                                                                
    expect "Enter password:"                                                                                                                                                            
    send "$password
    "                                                                                                                                                                  
    expect "mysql> "                                                                                                                                                                    
    #send "spool content.txt
    "                                                                                                                                                         
    send "show databases;
    "                                                                                                                                                            
    expect "mysql> "                                                                                                                                                                    
    send "select sleep(600);
    "                                                                                                                                                         
    expect "mysql> "                                                                                                                                                                    
    send "show databases;
    "                                                                                                                                                            
    #send "spool off
    "                                                                                                                                                                 
    #send "quit
    "                                                                                                                                                                      
    expect eof      
    
    
    loop.sh
    #!/bin/bash                                                                                                                                                                         
                                                                                                                                                                                        
    i=0                                                                                                                                                                                 
                                                                                                                                                                                         
    main ()                                                                                                                                                                             
    {                                                                                                                                                                                   
      for i in {1..1000}                                                                                                                                                                 
      do                                                                                                                                                                                 
     {                                                                                                                                                                                  
      i=i+1                                                                                                                                                                             
      expect -f create_connections.sh                                                                                                                                                    
     }&                                                                                                                                                                                 
      done                                                                                                                                                                                
    }                                                                                                                                                                                   
    main
    

    使用&实现shell脚本的并行

    如果负载均衡不生效,在pool所在节点监听一下member是否正常:

    ipnetns exec qlbaas-<vip-port-id> curl http://<member-ip>
    

    ipnetns相关命令:
    查看namespace:ip netns list
    监听服务:ip netns exec qlbaas- telnet

    遇到的问题及解决方法:

    1.远程访问返回2013错误,可以依照网上说的方式先试着解决一下,如果仍然无法实现,需要检查负载均衡的协议是否为tcp协议

  • 相关阅读:
    [C++]怎么将.h和.cpp文件分别放在不同的目录
    [C++]VAssistX文件头添加注释功能设置
    教程-Delphi调用百度地图API(XE8+WIN7)
    WebBrowser的各种使用方法(未完待续)(XE8+WIN7)
    Android教程-夜神模拟器连接IDE更新让Delphi发现你的手机或夜神模拟器
    首尔甜城常用电话
    Android问题-DelphiXE5开发Andriod连接Webservice乱码问题
    点乘的使用
    [转]脏读,不可重复读,幻读的理解
    Unity3D刚体不同力的测试(ForceMode,AddForce,RelativeAddForce)
  • 原文地址:https://www.cnblogs.com/joy-li/p/6925241.html
Copyright © 2011-2022 走看看