LNMP+HAProxy+Keepalived负载均衡 - LNMP基础环境准备

佟阳焱
2023-12-01
  1. 环境版本说明:

    • 服务器系统:CentOS 7.5:


cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core) # 输出结果
  • 服务器IP地址:
    服务器A:192.168.6.100
    服务器B:192.168.6.200
  • LNMP版本:
    lnmp1.5
    下载地址:http://soft.vpser.net/lnmp/ln...
  • 准备安装环境(两台服务器都需要执行):

  • 
    # 关闭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
    
  • 安装lnmp:

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

    根据自己的需要选择MySQL、PHP等软件的版本,按提示操作,然后等待安装完成。我这里都选择最新版本。记好设置的相关密码,后面会用到。

  • 其他命令集合(仅用参考,无需执行):

  • 
    # 添加用户组和用户,并为其分配相关文件夹的最高权限:
    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
    
  • 离线安装
    如果要安装的服务器无法连接外网,安装就要麻烦很多,无法使用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

  • 
    # 安装完成后,打印出的安装日志里面有一些有用的提示信息,如:
    # 查看临时密码:
    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

  • 
    # 配置HAProxy;
    cat /etc/haproxy/haproxy.cfg
    vim /etc/haproxy/haproxy.cfg
    # 编辑配置文件内容,请参考HAProxy的负载均衡
    # 重启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;

  • 
    # 编辑配置文件:
    vim /etc/keepalived/keepalived.conf
    # 主从服务器的配置略有差别,具体配置请参照Keepalived的配置;
    

    来源:https://segmentfault.com/a/1190000017845210

 类似资料: