LNMP+HAProxy+Keepalived負載均衡(一)- LNMP基礎環境準備

錫裝站長發表於2019-01-19
  1. 環境版本說明:

    • 伺服器系統:CentOS 7.5:

      cat /etc/redhat-release
      CentOS Linux release 7.5.1804 (Core) # 輸出結果
    • 伺服器IP地址:
      Web伺服器:192.168.6.100,192.168.6.110
      DB伺服器:192.168.6.200,192.168.6.210
      虛擬IP:192.168.6.111,192.168.6.211(後面配置Keepalived時使用)
    • LNMP版本:
      lnmp1.5
      下載地址:http://soft.vpser.net/lnmp/ln…
  2. 準備安裝環境(所有伺服器都需要執行):

    # 關閉selinux(如果是centos系統,預設會開啟selinux,會引發很多許可權問題)
    vim /etc/selinux/config
    # 把SELINUX=enforcing改為
    SELINUX=disabled
    # 儲存退出,並執行下面的命令使配置立即生效:
    setenforce 0
    
    # 升級所有包,改變軟體設定和系統設定,系統版本核心都升級
    # yum -y update
    # 升級所有包,不改變軟體設定和系統設定,系統版本升級,核心不改變
    yum -y upgrade
    # 安裝後面用到的軟體
    yum -y install haproxy keepalived vim crontabs mlocate && updatedb
    # 建立資料夾,並將lnmp安裝包下載到當前新建立的資料夾
    mkdir -p /home/soft && cd /home/soft && wget http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz
    # 解壓安裝包
    tar -xvf lnmp1.5-full.tar.gz
  3. 安裝lnmp(DB伺服器可以只安裝資料庫./install.sh db):

    cd /home/soft/lnmp1.5-full
    ./install.sh

    根據自己的需要選擇MySQL、PHP等軟體的版本,按提示操作,然後等待安裝完成。我這裡都選擇最新版本。記好設定的相關密碼,後面會用到。

  4. 其他命令集合(僅用參考,無需執行):

    # 新增使用者組和使用者,併為其分配相關資料夾的最高許可權:
    groupadd -r GroupName 
    useradd -g UserName -M -s /sbin/nologin GroupName
    chown -R GroupName:UserName /usr/local/haproxy
    
    # 工具版本檢視
    mysql -uroot -pPwdStr # 登入後就可以看到mysql的版本
    nginx -v    # nginx version
    haproxy -v    # HA-Proxy version
    keepalived -v    # keepalived 版本
    
    # 編輯配置檔案集合:
    vim /etc/keepalived/keepalived.conf
    vim /etc/rsyslog.conf  # 編輯系統日誌配置
    vim /etc/rsyslog.d/haproxy.conf  # HAProxy的日誌
    vim /etc/sysconfig/rsyslog  # rsyslog的主配置
    vim /usr/local/nginx/conf/nginx.conf  #  Nginx的配置
    vim /etc/haproxy/haproxy.cfg  # HAProxy的配置
    vim /etc/my.cnf  # MySQL的配置
    
    # 將相關服務設定為開機啟動:
    chkconfig nginx on      # Web服務
    chkconfig mysql on      # 資料庫服務
    chkconfig haproxy on    # 反向代理服務
    chkconfig keepalived on # 服務狀態監測
    chkconfig crond on      # 計劃任務服務
    chkconfig rsyslog on    # 日誌服務
    
    # 重啟各服務集合:
    service haproxy restart & service haproxy status
    service rsyslog restart & service rsyslog status
    service nginx restart & service nginx status
    service mysql restart & service mysql status
    service keepalived restart & service keepalived status
    service crond restart & service crond status
    lnmp restart
  5. 離線安裝
    如果要安裝的伺服器無法連線外網,安裝就要麻煩很多,無法使用lnmp的一鍵安裝包了。只能通過PC下載,然後遠端上傳到伺服器,然後再編譯安裝。這裡就不列舉所有軟體的安裝。

    • 下載MySQL
      點選官方下載 mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar;
    • 安裝MySQL

      # 解除安裝系統自帶資料庫:
      rpm -qa | grep MySQL-
      rpm -ev xxx
      rpm -e --nodeps mysql
      yum -y remove mari*
      
      # 將下載的檔案通過Xftp上傳到伺服器
      # 解壓檔案到當前目錄:
      tar -xvf mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
      # 安裝 MySQL:
      rpm -ivh MySQL_*
      
      # 建立使用者組和使用者:
      groupadd -r mysql
      useradd -g mysql mysql
      # 為MySQL的資料庫資料夾授權:
      chown -R mysql:mysql /home/lnmp/mysql/data/
      # 相應的依賴 
      # 1. libaio 
      # 2. net-tools 
      # 3. perl
      # 安裝perl
      ./Configure -des -Dprefix=/usr/bin/perl
      make && make test
      make install
      perl -v
      # 只需要安裝一下四個元件就可以了:
      # 因為具有依賴關係,所以需要按順序執行:
      rpm -ivh mysql-community-common-*.rpm
      rpm -ivh mysql-community-libs-*.rpm
      rpm -ivh mysql-community-client-*.rpm
      rpm -ivh mysql-community-server-*.rpm
      # 檢視mysql是否啟動
      service mysqld status
      # 啟動mysql
      service mysqld start
      # 停止mysql
      service mysqld stop
      # 重啟mysql
      service mysqld restart
    • 配置MySQL(請參考LNMP+HAProxy+Keepalived負載均衡(三)- 配置檔案彙總);

      # 安裝完成後,列印出的安裝日誌裡面有一些有用的提示資訊,如:
      # 檢視臨時密碼:
      cat /root/.mysql_secret
      # /usr/bin/mysql_secure_installation
      # New default config file was created as /usr/my.cnf and
      # will be used by default by the server when you start it.
      # WARNING: Default config file /etc/my.cnf exists on the system
      # This file will be read by default by the MySQL server
      # If you do not want to use this, either remove it, or use the
      # --defaults-file argument to mysqld_safe when starting the server
      
      # 登入後修改密碼:
      mysql> SET PASSWORD = PASSWORD(`DBPwdStr`);
      # 為資料庫建立訪問賬戶,修改賬戶的限制IP,查詢使用者表:
      mysql> GRANT ALL ON *.* TO `username`@`%` IDENTIFIED BY `DBPwdStr` WITH GRANT OPTION;
      mysql> update mysql.user set host=`%` where host=`::1`;
      mysql> delete from mysql.user where host<>`%`;
      mysql> select * from mysql.user G;
      
      # 編輯MySQL的配置檔案:
      vim /etc/my.cnf
      
      # 啟動MySQL服務:
      service mysql restart  && service mysql status
      
      # 啟動錯誤
      # The server quit without updating PID file (/home/lnmp/mysql/data/localhost.localdomain.pid).
      # 1.可能是/usr/local/mysql/data/rekfan.pid檔案沒有寫的許可權
      # 解決方法 :給予許可權,執行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”  然後重新啟動mysqld!
      # 2.可能程式裡已經存在mysql程式
      # 解決方法:用命令“ps -ef|grep mysqld”檢視是否有mysqld程式,如果有使用“kill -9  程式號”殺死,然後重新啟動mysqld!
      # 3.可能是第二次在機器上安裝mysql,有殘餘資料影響了服務的啟動。
      # 解決方法:去mysql的資料目錄/data看看,如果存在mysql-bin.index,將它刪除。
      # 4.mysql在啟動時沒有指定配置檔案時會使用/etc/my.cnf配置檔案,檢視該檔案的[mysqld]下有沒有指定的資料目錄(datadir)。
      # 解決方法:請在[mysqld]下設定這一行:datadir = /usr/local/mysql/data
    • 安裝計劃任務管理工具 – crontabs;
      點選連結下載 crontabs-1.11-6.20121102git.el7.noarch.rpm,如需下載其他版本,請訪問官網
      安裝:rpm -ivh crontabs-1.11-6.20121102git.el7.noarch.rpm
      新增自動備份任務,具體操作請參考MySQL的自動備份。
    • 下載(需要連線VPN)並安裝HAProxy;
      點選連結下載 haproxy-1.5.19.tar.gz,如需下載其他版本請訪問官網
      安裝HAProxy:

      # 新增使用者組和使用者:
      groupadd -r haproxy 
      useradd -g haproxy -M -s /sbin/nologin haproxy
      # 為安裝資料夾授權:
      chown -R haproxy:haproxy /usr/local/haproxy
      # 檢視核心:
      uname -r
      # 解壓安裝包
      tar -xvf haproxy-1.5.19.tar.gz
      cd haproxy-1.5.19
      
      # 根據核心版本進行編譯(這裡的版本對應的目標是linux310):
      make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/haproxy
      make install PREFIX=/usr/local/
      # 將可執行檔案拷貝到全域性目錄下:
      cp /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
    • 配置HAProxy(請參考LNMP+HAProxy+Keepalived負載均衡(三)- 配置檔案彙總);

      # 配置HAProxy;
      cat /etc/haproxy/haproxy.cfg
      vim /etc/haproxy/haproxy.cfg
      # 編輯配置檔案內容
      # 重啟HAProxy服務;
      haproxy -f /etc/haproxy/haproxy.cfg
      # 測試HAProxy;
      ps -ef | grep haproxy
      # 訪問HAProxy代理的地址和埠,分別停掉備伺服器的Nginx服務後,繼續訪問正常則說明基本配置沒問題;
    • 下載並安裝Keepalived;
      點選連結下載Keepalived 1.4.5,下載其他版本請訪問官網;
      安裝Keeplived;

      tar -xvf keepalived-1.4.5.tar.gz
      cd keepalived-1.4.5
      ./configure  --prefix=/usr/local/keepalived
      make && make install
      
      mkdir /etc/keepalived
      cp /usr/local/keepalived/sbin/keepalived /usr/bin/keepalived
      cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
      cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
      # 設定開機啟動
      chkconfig keepalived on
      # 服務操作命令
      service keepalived start
      service keepalived stop
      service keepalived restart
      service keepalived status
      service keepalived restart & service keepalived status
    • 配置Keepalived(請參考LNMP+HAProxy+Keepalived負載均衡(三)- 配置檔案彙總);

      # 編輯配置檔案:
      vim /etc/keepalived/keepalived.conf
      # 主從伺服器的配置略有差別,具體配置請參照Keepalived的配置;

相關文章