基礎環境
- 操作系統:RHEL7.4(VM workstation 14pro)
- 數據庫:mariadb10.1.28-systemd
- web服務器:Nginx1.10+php-fpm
- 文件服務器:NFS
DS服務器實現高可用
1、關閉selinux及防火墻
[root@localhost ~]#sed -i 's/SELINUX=enforcing/SELINUX=disabled' /etc/selinux/conf
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld
2、配置Centos的yum源
配置如下:
[root@localhost ~]#cat /etc/yum.repo.d/Centos7.repo
[Centos7]
name=Centos7repo
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
gpgkey=http://mirror.aliyun.org/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
gpgcheck=1
enable=1
3、安裝并配置keepalived
[root@localhost ~]#yum install -y keepalived
[root@localhost ~]#cp /etc/keepalived/keepalived.conf{,.bak}
[root@localhost ~]#vim /etc/keealived/keepalived.conf
! Configuration File for keepalived
global_defs {
# notification_email { 告警通知的email
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
# }
# notification_email_from Alexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30
router_id LVS_DEVEL
# vrrp_skip_check_adv_addr
# vrrp_strict 默認開啟情況下,當keepalived啟動后,會在INPUT鏈上添加一條全DROP規則
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { 實例名
state MASTER 主
interface ens33 實例指定網絡接口
virtual_router_id 51 虛擬路由ID,主備相同
priority 100 主備優先級
advert_int 1
authentication {
auth_type PASS 認證方式
auth_pass 1111 明文密碼
}
virtual_ipaddress {
192.168.101.200 虛擬路由IP地址
}
}
備機上需要對優先級,主備狀態進行修改
state BACKUP 備
priority 80 主備優先級,值越大,級別越高
[root@localhost ~]#systemctl restart keepalived.service
可通過ping 192.168.101.200進行簡單的測試
Mariadb、NFS服務器搭建
1、關閉selinux及防火墻
[root@localhost ~]#sed -i 's/SELINUX=enforcing/SELINUX=disabled' /etc/selinux/conf
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld
2、創建用戶、組
[root@localhost ~]#groupadd -g 700 mysql
[root@localhost ~]#useradd -u 700 -g mysql -s /sbin/nologin mysql
[root@localhost ~]#
3、安裝mariadb數據庫
因為systemd模式已經完全取代init,所以,在RHEL安裝中最好使用systemd[Maridb安裝包for systems with systemd](https://downloads.mariadb.org/mariadb/mariadb-10.1.28-linux-systemd-x86_64.tar.gz (for systems with systemd))
[root@localhost ~]#cd /tmp
[root@localhost tmp]#tar -zvxf mariadb-10.1.28-linux-systemd-x86_64.tar.gz
[root@localhost ~]#ln -s /tmp/mariadb-10.1.28 /usr/local/mysql
[root@localhost ~]#cp /usr/local/mysql/support-files/mariadb.service /usr/lib/systemd/system/ 復制mariadb.service文件至systemd加載目錄
[root@localhost ~]#systemctl enable mariadb.service
[root@localhost ~]#cp /usr/local/mysql/my-large.cnf /etc/my.cnf 復制配置文件至/etc目錄
[root@localhost ~]#sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
[root@localhost ~]#source /etc/profile 添加環境變量
[root@localhost ~]#./usr/local/mysql/scripts/mysql_install_db --user=mysql
[root@localhost ~]#mysqladm -uroot passwod 指定root用戶登錄密碼
[root@localhost ~]#systemctl start mariadb.service
[root@localhost ~]#mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.1.28-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by '********';
賦權root用戶可以在任何主機通過******(密碼) 訪問所有數據庫及表
MariaDB [(none)]> flush privileges;
4、搭建NFS文件共享
[root@localhost ~]#yum install -y nfs-utils
[root@localhost ~]#mkdir /www
[root@localhost ~]#chown -R root:root /www
[root@localhost ~]#chmod -R 775 /www
[root@localhost ~]#vim /etc/exports
添加如下內容:
/www 192.168.101.0/24(rw,no_root_squash)
no_root_squash:root用戶可以對該目錄進行讀寫操作;
[root@localhost ~]#systemctl restart nfs.service
[root@localhost ~]#showmount -e
Export list for localhost.localdomain:
/www 192.168.101.0/24
RS(Nginx)服務器搭建
1、編譯安裝Nginx1.10
通過Nginx官方下載[Nginx1.10.tar.gz](http://nginx.org/download/nginx-1.10.3.tar.gz)
[root@localhost ~]#yum install -y gcc openssl-devel perl-devel pcre-devel perl-ExtUtils-Embed
[root@localhost ~]#tar -zvxf nginx-1.10.3.tar.gz
[root@localhost nginx-1.10.3]#./configure \
--prefix=/usr/local/nginx1.10 \
--modules-path=/usr/local/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx.log \
--pid-path=/var/run/nginx.pid \
--user=nginx --group=nginx \ 需要先創建用戶、組
--with-http_ssl_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_perl_module \
--with-ld-opt="-L,/usr/local/lib" 支持perl模塊時必須安裝,否則啟動服務會報錯
[root@localhost nginx-1.10.3]#make && make install
[root@localhost ~]#sed -i '$aexport PATH=/usr/local/nginx1.10/sbin:$PATH' /etc/profile
[root@localhost ~]#source /etc/profile 指定Nginx環境變量并生效
[root@localhost ~]#nginx -c /etc/nginx/nginx.conf
[root@localhost ~]#netstat -atnlp
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14156/nginx: master
通過瀏覽器便可訪問Nginx測試頁面
2、安裝配置php-fpm
[root@localhost ~]#yum install -y php-fpm php-mysql
[root@localhost ~]#systemctl start php-fpm.service
[root@localhost ~]#netstat -atnlp
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1462/php-fpm: maste
[root@localhost ~]#vim /etc/php-fpm.d/www.conf
; Start a new pool named 'www'.
[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = apache
group = apache
……
默認情況下,php-fpm監聽本地127.0.0.1:9000地址
3、配置Nginx支持php-fpm解析
[root@localhost ~]#vim /etc/nginx/nginx.conf
……
server {
listen 80;
server_name localhost;
charset utf-8; 支持簡體中文字符
root html; 根目錄/usr/local/nginx1.10/html
client_max_body_size 50M;
#access_log logs/host.access.log main;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 當root在server段定義后,此處可以修改為$document_root來定位文件位置
include fastcgi_params;
}
}
……
4、配置本地網絡實現lvs_dr模式
創建如下腳本,修改內核參數執行:
[root@localhost ~]#vim dr.sh
#!/bin/bash
VIP=192.168.101.200
case $1 in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
route add -host $VIP dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
sysctl -p >/dev/null 2>&1
echo "The VIP configure successful!"
;;
stop)
ifconfig lo:0 down
route del -host $VIP dev lo:0
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
sysctl -p > /dev/null 2>&1
echo "The VIP deleted!"
;;
*)
echo "usage:please choose options {start|stop}"
;;
esac
[root@localhost ~]#chmod +x dr.sh
[root@localhost ~]#./dr.sh start
[root@localhost ~]#ifconfig
lo:0: flags=73<up,loopback,running> mtu 65536
inet 192.168.101.200 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
</up,loopback,running>
5、本地添加NFS共享目錄
[root@localhost ~]#yum install -y nfs-utils [root@localhost ~]#mkdir /www [root@localhost ~]#vim /etc/fstab 添加一條掛載信息 192.168.101.151:/www /www nfs defaults 0 0 [root@localhost ~]#mount -t nfs 192.168.101.151:/www /www
以上相同操作再部署一臺RS服務器,IP地址192.168.101.202
基于keepalived實現lvs_dr模式負載均衡
1、配置keepalived
在原有高可用基礎上,增加虛擬服務器及realserver
[root@localhost ~]#vim /etc/keepalived/keepalived.conf
virtual_server 192.168.101.200 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.101.201 80 {
weight 1
TCP_CHECK { 監控服務狀態方式,類似的還有SSL_GET\HTTP_GET等
connect_port 80 監控的端口
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.101.202 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
}
}
}
以上代碼需要在主備上均配置添加
[root@localhost ~]#systemctl restart keepalived
[root@localhost ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.101.200:80 rr persistent 50
-> 192.168.101.201:80 Route 1 0 0
-> 192.168.101.202:80 Route 1 0 0
部署wordpress個人網站
1、官網下載wordpress安裝包,解壓至NFS服務器/www目錄下
[root@localhost ~]#cd /www
[root@localhost www]#tar -zvxf wordpress-4.9.1-zh_CN.tar.gz
[root@localhost www]#cd wordpress
[root@localhost wordpress]#cp wp-config-sample.php wp-config.php{,.bak}
2、配置數據庫信息
[root@localhost wordpress]#vim wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', '********');
define('DB_HOST', '192.168.101.151');
define('DB_CHARSET', 'utf8');
define("FS_METHOD","direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
3、配置Nginx訪問目錄
在兩臺RS服務器上修改nginx.conf
[root@localhost ~]#vim /etc/nginx/nginx.conf
server {
listen 80;
server_name localhost;
charset utf-8;
root /www/wordpress;
client_max_body_size 50M;
……
}
4、開啟wordpress之旅
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89869