如何在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 需要安裝第三方插件 根據地址按照相應的算法來計算

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