如何在linux服务器上搭建mysql读写分离

如何在linux服务器上搭建集群

概念:多台服务器同时对外提供服务

优点:

1.高可用

2.解决单个物理服务的上线

常用的集群架构:

主从架构(master-slave)(DB)

负载均衡(应用服务器Tomcat)

主从架构(master-slave)(DB)

  1. 首先实现mysql读写分离需要解决的问题

    a)无法通过精确保证读走从机,写走主机;

    b)通过程序访问数据库时,url不能直接写死一个DB服务器的IP

    解决方案:使用mycat中间件

  2. 具体实现步骤:

    1. 首先从母机克隆一个服务器起名mycat

    2. 修改ens-37 配置一个新的IP

    3. 安装Mycat中间件

      从官网下载mycat

      先安装wget命令插件 yum install -y wget

      执行 wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz 下载

    4. 执行 tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz 解压缩mycat

    5. 执行 mv mycat /usr/ 移动到usr目录下

    6. 配置mycat的环境变量

      执行 vim .bash_profile 配置信息如下:

      export JAVA_HOME=/usr/jdk1.8.0_171
      export MYCAT_HOME=/usr/mycat
      export PATH=JAVAHOME/bin:JAVA_HOME/bin:MYCAT_HOME/bin:$PATH
      在这里插入图片描述

      执行 source .bash_profile

      mycat

      如上最后一行显示配置成功

    7. 配置mycat中conf下的配置文件schema.xml

      执行 vim /usr/mycat/conf/schema.xml

      删除schema标签里所有的信息

      输入如下信息:

      <!-- 定义MyCat的逻辑库  -->   
          <schema name="给mycat起的逻辑名称" checkSQLschema="false" sqlMaxLimit="100" dataNode="testNode"></schema>
          <!-- 定义MyCat的数据节点 -->
          <dataNode name="testNode" dataHost="dtHost" database="真是数据库的名称" />
         <dataHost name="dtHost" maxCon="1000" minCon="10" balance="1"
                      writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">
                      <heartbeat>select user()</heartbeat>
                      <!-- can have multi write hosts -->
                      <writeHost host="hostM1" url="192.168.28.128:3306" user="root"
                              password="root">
                              <!-- can have multi read hosts -->
                      <readHost host="hostS1" url="192.168.28.129:3306" user="root" password="root" />
                      </writeHost>
         
      </dataHost>
      
      
    8. 配置登陆mycat的权限

      执行vim server.xml

      删除mycat标签中的所有信息

      输入信息如下:

      		<system>
                      <!-- 这里配置的都是一些系统属性,可以自己查看mycat文-->
                      <property name="defaultSqlParser">druidparser</property>
                      <property name="charset">utf8mb4</property>
              </system>
      
      
              <user name="root">
                      <property name="password">root</property>
                      <property name="schemas">mycat对应的逻辑名</property>
              </user>
      
    9. 执行 mycat console 前台启动mycat

      启动报错:启动超时

      在这里插入图片描述

      解决方法:

      修改conf里的wrapper.conf配置文件,修改里面的超时时间

      wrapper.startup.timeout=7200  #2小时
      
    10. 成功 在这里插入图片描述

    负载均衡(应用服务器Tomcat)

    1. 单节点应用服务器存在的问题

      a)当单个应用服务器宕机时,整个网站瘫痪无法提供相应的服务

      b)当大量用户并发访问应用服务器时,服务器会因为负载过重,宕机,无法对外提供服务器

      解决方案:搭建集群解决单节点问题

    2. 如何做到负载均衡的问题

      使用nginx中间件,nginx是一个高性能的HTTP和反向代理web服务器;

    3. 负载均衡搭建步骤

      1. 从母机克隆三台服务器并修改静态IP

        母机里应该有tomcat

      2. 使用SCRT连接三台服务器

      3. 修改服务器index.jsp便于测试观察是否搭建成功

      4. 克隆nginx服务器修改静态IP 连接SCRT

      5. 上传nginx的安装包 并解压

      6. 手工编译nginx 通过 ./configure 初始化编译环境

        报错:
        在这里插入图片描述

        解决方案:

        因为nginx时c语言编写需要安装gcc c语言编译环境

        执行 yum -y install gcc

      7. 安装完成之后再执行 ./configure

        报错在这里插入图片描述

        解决方案:

        安装pcre-devel

        执行 yum -y install pcre-devel

        安装zlib-devel

        执行 yum -y install zlib-devel

      8. ./configure

        成功

        在这里插入图片描述

      9. 编译并安装nginx

        执行 make && make install

        默认安装位置 : /usr/local/nginx

      10. 启动nginx

        执行 cd /usr/local/nginx/sbin

        执行 ./nginx

      11. 启动成功访问
        在这里插入图片描述

      12. 关闭nginx

        ./nginx -s stop

      13. 在nginx配置tomcat服务器的负载均衡

      14. 配置nginx管理的tomcat

      15. 进入nginx的conf目录下

        执行 vim nginx.conf

      16. 将一下配置信息复制到server上面:

        upstream tomcat-servers {
        		#ip_hash;
        		server 192.168.56.204:8989;//需要负载均衡的服务器IP
        		server 192.168.56.205:8989;
        		server 192.168.56.206:8989;
        }
        

        在这里插入图片描述

      17. 配置访问nginx时的跳转路径

        location / {
        			 proxy_pass http://tomcat-servers;
        			 proxy_redirect    off;
        			 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        			 proxy_set_header X-Real-IP $remote_addr;
        			 proxy_set_header Host $http_host;
        			 proxy_next_upstream http_502 http_504 error timeout invalid_header;
        		   }
        

    在这里插入图片描述

    1. 测试

      成功 nginx 默认的负载均衡方式时轮询

补充:负载均衡的策略

  1. 轮询 按照固定顺序

    upstream tomcat-servers {
    		#ip_hash;
    		server 192.168.56.204:8989;//需要负载均衡的服务器IP
    		server 192.168.56.205:8989;
    		server 192.168.56.206:8989;
    }
    
  2. IP hash 根据访问的IP(数字) % tomcat的数量 得到数字 数字决定请求到哪个服务器

    upstream tomcat-servers {
    		ip_hash;
    		server 192.168.56.204:8989;//需要负载均衡的服务器IP
    		server 192.168.56.205:8989;
    		server 192.168.56.206:8989;
    }
    
  3. weight 根据对应的权重 决定优先级 权重越大 优先级越大

    upstream tomcat-servers {
    		#ip_hash;
    		server 192.168.56.204:8989 wegiht=数字; //需要负载均衡的服务器IP  wegiht设定权重访问优先级
    		server 192.168.56.205:8989 wegiht=数字;  
    		server 192.168.56.206:8989 wegiht=数字;
    }
    
  4. least_conn 最少连接方式

  5. fair 大数据用 需要安装第三方插件 按照服务器端的响应时间来分配请求,响应时间短的优先分配

  6. url_hash 需要安装第三方插件 根据地址按照相应的算法来计算

server 192.168.56.204:8989 wegiht=数字; //需要负载均衡的服务器IP  wegiht设定权重访问优先级
   		server 192.168.56.205:8989 wegiht=数字;  
   		server 192.168.56.206:8989 wegiht=数字;
   }
  1. least_conn 最少连接方式

  2. fair 大数据用 需要安装第三方插件 按照服务器端的响应时间来分配请求,响应时间短的优先分配

  3. url_hash 需要安装第三方插件 根据地址按照相应的算法来计算

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章