基于LNMP+HAproxy+Keepalived搭建高可用小型站点
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,```* 基于LNMP+HAproxy+Keepalived搭建高可用小型站点前端服务器 192.168.55.7VIP 192.168.55.100 haproxy keepalived19
千家信息网最后更新 2025年12月02日基于LNMP+HAproxy+Keepalived搭建高可用小型站点
```* 基于LNMP+HAproxy+Keepalived搭建高可用小型站点前端服务器 192.168.55.7VIP 192.168.55.100 haproxy keepalived192.168.55.10VIP 192.168.55.100 haproxy keepalived后端服务器 192.168.55.5 php-7.1.30.tar.gznginx-1.14.2.tar.gz192.168.55.6 php-7.1.30.tar.gznginx-1.14.2.tar.gzmysql 192.168.55.8 mysql nfs前端服务器192.168.55.7 和 192.168.55.10 1、yum 安装keepalived (可编译安装)yum install keepalived -y2、编辑配置文件vim /etc/keepalived/keepalived.conf--------------------------------------------------------------------------------! Configuration File for keepalivedglobal_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from localhost.localdomain smtp_server 172.22.0.1 smtp_connect_timeout 30 router_id localhost.localdomain1 vrrp_skip_check_adv_addr #vrrp_strict vrrp_iptables vrrp_garp_interval 0 vrrp_gna_interval 0}vrrp_script chk_haproxy { script /etc/keepalived/chk_haproxy.sh interval 2 weight -50 fall 3 rise 5 timeout 2}vrrp_instance VIP1 { state BACKUP #从配置换成这个MASTER interface ens37 virtual_router_id 36 priority 100 advert_int 2 nopreempt unicast_src_ip 192.168.55.7 unicast_peer { 192.168.55.10} authentication { auth_type PASS auth_pass linux36 } virtual_ipaddress { 172.20.200.200 dev ens37 label ens37:1 172.20.200.201 dev ens37 label ens37:2 } notify_master "/etc/keepalived/ping.sh"}--------------------------------------------------------------------------------配置中的脚本cat /etc/keepalived/chk_haproxy.sh #!/bin/bashif ! killall -0 haproxy &>/dev/null;then systemctl restart haproxy sleep 1 if ! killall -0 haproxy &>/dev/null;then systemctl stop keepalived fifi--------------------------------------------------------------------------------cat /etc/keepalived/ping.sh #!/bin/bashping -c 2 172.22.0.1 &> /dev/nullif [ $? -eq 0 ];then exit 0else exit 2fi--------------------------------------------------------------------------------注:这俩个脚本起检测作用编译安装haproxyyum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate -y解压安装包cd /usr/local/src/tar xvf haproxy-1.8.20.tar.gz 编译安装进入目录cd haproxy-1.8.20开始编译make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy生成目录make install PREFIX=/usr/local/haproxy查看版本./haproxy -h拷贝主文件cp /usr/local/src/haproxy-1.8.20/haproxy /usr/sbin/创建启动脚本:--------------------------------------------------------------------------------vim /usr/lib/systemd/system/haproxy.service[Unit]Description=HAProxy Load BalancerAfter=syslog.target network.target[Service]ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -qExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pidExecReload=/bin/kill -USR2 $MAINPID[Install]WantedBy=multi-user.target--------------------------------------------------------------------------------创建目录和用户:mkdir /etc/haproxymkdir /var/lib/haproxyuseradd haproxy -s /sbin/nologinchown haproxy.haproxy /var/lib/haproxy/ -R--------------------------------------------------------------------------------vim /etc/haproxy/haproxy.cfg--------------------------------------------------------------------------------globalmaxconn 65536chroot /usr/local/haproxystats socket /var/lib/haproxy/haproxy.sock mode 600 level adminuid 1001gid 1001daemonnbthread 2nbproc 2cpu-map 1 0cpu-map 2 1#cpu-map 3 2#cpu-map 4 3spread-checks 5pidfile /run/haproxy.pidlog 127.0.0.1 local3 infodefaultsoption http-keep-aliveoption forwardforoption redispatchoption abortonclosemaxconn 100000mode httptimeout connect 300000mstimeout client 300000mstimeout server 300000mslisten stats bind :9999 stats enable# stats hid-version stats uri /haproxy-status stats realm HAPorxy\ Stats\ Page stats auth haadmin:123456 stats auth admin:123456 stats auth lvze:123456 stats refresh 30s# stats admin if TRUE listen web_port bind 0.0.0.0:8080 mode http log global server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5listen WEB_PORT_80 mode tcp bind 192.168.55.7:80 server web1 192.168.55.6:80 cookie web-103 weight 2 check inter 3000 fall 3 rise 5 server web2 192.168.55.5:80 cookie web-104 weight 1 check inter 3000 fall 3 rise 5listen MySQL_PORT bind 192.168.55.8:3306 mode tcp server web1 192.168.55.8:3306 cookie web-103 weight 1 check inter 3000 fall 3 rise 5--------------------------------------------------------------------------------启动HAProxy:systemctl start haproxy 启动 systemctl restart haproxy 重启systemctl enable haproxy 开机自启动后端服务器192.168.55.8创建共享目录yum install nfs-utils -ymkdir /nfsdata/wordpress -pvi /etc/exports/nfsdata/wordpress *(rw,no_root_squash) systemctl start nfs systemctl enable nfs 二进制安装mariadb 1 准备用户和组groupadd -r -g 336 mysqluseradd -r -g mysql -u 336 -s /sbin/nologin -d /data/mysql mysql2 准备二进制程序文件和相关文件属性tar xvf mariadb-10.2.23-linux-x86_64.tar.gz -C /usr/local/cd /usr/local/ln -s mariadb-10.2.23-linux-x86_64/ mysqlchown -R root.root /usr/local/mysql/3 PATH变量cat /etc/profile.d/mysql.sh vim /etc/profile.d/mysql.sh 编辑文件PATH=/usr/local/mysql/bin:$PATH 写入变量source /etc/profile.d/mysql.sh 激活变量echo $PATH 查看变量4 准备数据库数据目录和数据--改成逻辑卷mkdir /data/mysql -pvchown mysql.mysql /data/mysql/cd /usr/local/mysql./scripts/mysql_install_db --datadir=/data/mysql --user=mysql5 准备Mysql的服务器端的配置文件mkdir /etc/mysqlcp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf vim /etc/mysql/my.cnf [mysqld] datadir=/data/mysql 加一行6 准备服务启动脚本cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld查看服务 chkconfig --list添加服务 chkconfig --add mysqldservice mysqld start 或 service myseqld rstart7 安全加固mysql_secure_installation8 授权用户,用来博客连接数据库mysql -uroot -p 123456CREATE DATABASE wordpress;GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"192.168.55.%" IDENTIFIED BY "123456"; flush privileges;192.168.55.5 192.168.55.6php-7.1.18.tar.ba2nginx-1.14.2.tar.gz源码编译php下载需要的软件yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2- devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg devel进入目录 解压包 cd //usr/local/src/tar xvf php-7.1.18.tar.ba2开始编译 cd php-7.1.18.tar.bz2 ./configure --prefix=/app/php \--enable-mysqlnd \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--with-openssl \--with-freetype-dir \--with-jpeg-dir \--with-png-dir \--with-zlib \--with-libxml-dir=/usr \--with-config-file-path=/etc \--with-config-file-scan-dir=/etc/php.d \--enable-mbstring \--enable-xml \--enable-sockets \--enable-fpm \--enable-maintainer-zts \--disable-fileinfo make -j 2make install修改配置文件cp /app/php/etc/php-fpm.conf.default /app/php/etc/www.conf 创建用户wwwuseradd www -u 2019进入编译安装的目录备份并改名配置文件cd /app/php/etc/php-fpm.d cp www.conf.default www.confgrep -v ";" www.conf |grep -v "^$"cd /app/php/etc cp php-fpm.conf.default php-fpm.conf启动php/app/php/sbin/php-fpm -v/app/php/sbin/php-fpm -t/app/php/sbin/php-fpm -c /app/php/etc/php.ini ps -ef | grep php-fpmss -ntl 创建php测试页面mkdir /data/nginx/wordpress -pvim /data/nginx/wordpress/index.php编译nginx-1.14.2tar xvf nginx-1.14.2.tar.gz -C /usr/local/src/cd /usr/local/src/nginx-1.14.2./configure --prefix=/apps/nginx \--user=nginx \--group=nginx \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-pcre \--with-stream \--with-stream_ssl_module \--with-stream_realip_modulemake make install ln -s /apps/nginx/sbin/nginx /sbin/ 修改配置文件vim /apps/nginx/conf/nginx.confuser www www;include /apps/nginx/conf/server/*.conf;--------------------------------------------------------------------------------创建副配置目录mkdir /apps/nginx/conf/server -pv--------------------------------------------------------------------------------vim /apps/nginx/conf/server/www.magedu.net.conf server { listen 80; server_name www.magedu.net; location / { root /data/nginx/woedpress; index index.php index.html index.htm; } location ~ \.php$ { root /data/nginx/woedpress; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}nginx -t 测试后端服务器配置192.168.55.5 192.168.55.6wordpress-5.0.3-zh_CN.tar.gzcd /data/nginx/woedpress/ tar xvf wordpress-5.0.3-zh_CN.tar.gz mv index.php wordpress-5.0.3-zh_CN.tar.gz /optmv wordpress/* .mv wordpress /opt/cp wp-config-sample.php wp-config.php vim /data/nginx/woedpress/wp-config.php// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** ///** WordPress数据库的名称 */ define('DB_NAME', 'wordpress');/** MySQL数据库用户名 */define('DB_USER', 'wordpress');/** MySQL数据库密码 */define('DB_PASSWORD', '123456');/** MySQL主机 */define('DB_HOST', 'centos7.magedu.com');define('DB_CHARSET', 'utf8');define('DB_COLLATE', '');define('DB_COLLATE', '');* 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org密钥生成服务}define('AUTHKEY', 'S XT j5R<(4+.ku`1#CN:D1Xjrb');define('SECUREAUTHKEY', 'v&:.i|%(6CsL[jU,5+TU-cAvm+A}2{V/(=(3Cks]L~|g+ljE5m=B/{}:oq.w<');define('LOGGEDINKEY', 'd~a,Lt#-)ykANn;TW=!sXd#+o>a]+KTYWK un|=eLGHVyYYGD+aKkm};8|raW+@d');define('NONCEKEY', 'zr$LcVo|!pPr@ 4Q1~i8>S]VN{<@/Q;=eJ`Q|9N`kAHKy}e$Kxw#');define('AUTHSALT', '{`+8c/igV^=SW#[QW+%Kf:0v^F=~##C70ao#J1yO[W&XWnsd.|6nxTGyD+hx>u8');define('SECUREAUTHSALT', '|rp0)=Qs91]+^M/XFG{2q#K(&)c)z45P7-@@nyiU8.t}%kDGl8# u+uo?n-U');define('LOGGEDINSALT', 'cP!+/s^urC-LQ3mw
文件
服务
配置
目录
数据
编译
主机
服务器
数据库
用户
准备
变量
密钥
脚本
生成
安全
二进制
前端
网站
测试
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
武侯区邻田计算机软件开发工作室
数据库建模面试题
互联网时代新科技
天敌下载软件开发
网络安全术语拒绝服务是
财务软件数据库占用内存大吗
量子时代网络安全性
网络安全分几个等级
科技跟互联网有关的用户名
计算机软件开发培训学校
计算机服务器分别有哪些
为啥苹果会了解id时服务器出错
如何查看mt4服务器所在地
全国电视电话网络安全教育
北京社区智慧养老软件开发
酷京网络技术工作室
贵阳建一个华为数据库在哪里
软件开发工程量报价模板
自动化外汇交易软件开发
重庆做软件开发的公司电话
网络安全工程师有多少钱
厦门市睿游网络技术有限公
个人经营信息网络安全
西安现代化安全文化展厅软件开发
完美安全服务器
网络安全专业就业如何
网络安全技术与应用章节答案
软件开发专业有哪些领域
golang入门数据库
怎么判断数据库是全文数据库