• 使用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协议

  • 相关阅读:
    理解cookie和session机制
    http协议中connection头的作用
    [转]使用Wireshark来检测一次HTTP连接过程
    http协议学习系列
    xcode清空project list
    How To Use Git Source Control with Xcode in iOS 6
    iOS开发XCODE5 SVN配置 使用办法
    iOS申请证书,Certificates, Identifiers &Profiles 简介
    C#学习单向链表和接口 IList<T>
    halcon学习笔记——(7)HALCON标定后的二维测量
  • 原文地址:https://www.cnblogs.com/joy-li/p/6925241.html
Copyright © 2020-2023  润新知