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协议

  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/joy-li/p/6925241.html
Copyright © 2011-2022 走看看