#安装ntpdate工具
yum install ntpdate -y
#使用ntpdate校时(后面的是ntp服务器)
ntpdate pool.ntp.org
定时任务
crontab -e
/5 * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
每五分钟同步一次时间
分别在下面两天上面部署nginx和keepalived
192.168.254.128
192.168.254.129
关闭防火墙(如果因为其他原因不关闭,也请不要禁止80端口):systemctl stop firewalld.service
禁止防火墙自动启动:systemctl disable firewalld.service
查看系统版本
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
查看内核
uname -r
3.10.0-862.3.2.el7.x86_64
跟新系统及系统包
更新yum:yum update -y
安装基础包
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装nginx
(下载路径自己选择)
下载nginx1.14.0稳定版本
wget http://nginx.org/download/nginx-1.14.0.tar.gz
解压:tar -zxvf nginx-1.14.0.tar.gz
进入解压好后的源码目录:cd nginx-1.14.0
使用默认配置:./configure
编译并安装nginx:make && make install
启动nginx:/usr/local/nginx/sbin/nginx
快速停止nginx:/usr/local/nginx/sbin/nginx -s stop
优雅停止nginx(会将正在处理中的请求处理完毕):/usr/local/nginx/sbin/nginx -s quit
检测配置是否错误:/usr/local/nginx/sbin/nginx -t
重新加载配置:/usr/local/nginx/sbin/nginx -s reload
1、编写Nginx启动脚本,并加入系统服务
vim /etc/init.d/nginx
并在其中写入如下内容:
#!/bin/bash
#chkconfig: - 30 21
#description: http service.
#Source Function Library
. /etc/init.d/functions
#Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start() {
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload(){
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
configtest(){
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|
restart|configtest}"
RETVAL=1
esac
exit $RETVAL
并更改文件的执行权限:chmod 755 /etc/init.d/nginx
加入系统服务启动列表 :chkconfig --add nginx
并使开机启动:chkconfig nginx on
开启服务 : service nginx start
nginx 负载均衡简单配置
##这里说一下代理的服务不能是自己本地的服务
upstream web_server {
server 192.168.254.132;
server 192.168.254.133;
}
server
{
listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
server_name localhost;
index index.html index.htm index.php;
root /home/wwwroot/default;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
location / {
proxy_pass http://web_server;
}
安装keepalived
yum -y install keepalived
192.168.254.128上面keepalived配置
vi /etc/keepalived/keepalived.conf
! Configuration file for keepalived
global_defs {
notification_email {br/>[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#监控nginx
vrrp_script chk_nginx {
script "/etc/keepalived/monitor_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER #主从设置 MASTER
interface ens32 #网卡名
virtual_router_id 100
mcast_src_ip 192.168.254.128 #本机ip
priority 100 #从机小于主机
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.254.88 #VIP 的IP
}
track_script {
chk_nginx #检测脚本
}
}
vrrp_instance VI_2 {
state BACKUP #主从设置 MASTER
interface ens32 #网卡名
virtual_router_id 90
mcast_src_ip 192.168.254.128 #本机ip
priority 90 #从机小于主机
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.254.89 #VIP 的IP
}
track_script {
chk_nginx #检测脚本
}
}
192.168.254.129上面keepalived配置
! Configuration file for keepalived
global_defs {
notification_email {br/>[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#监控NGINX
vrrp_script chk_nginx {
script "/etc/keepalived/monitor_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP #主从设置 MASTER
interface ens32 #网卡名
virtual_router_id 100
mcast_src_ip 192.168.254.129 #本机ip
priority 99 #从机小于主机
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.254.88 #VIP 的IP
}
track_script {
chk_nginx #检测脚本
}
}
vrrp_instance VI_2 {
state MASTER #主从设置 MASTER
interface ens32 #网卡名
virtual_router_id 90
mcast_src_ip 192.168.254.129 #本机ip
priority 91 #从机小于主机
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.254.89 #VIP 的IP
}
track_script {
chk_nginx #检测脚本
}
}
监测脚本如下(相同一个脚本)
vi /etc/keepalived/monitor_nginx.sh
#!/bin/bash
a=ps -C nginx --no-header | wc -l
if [ $a -eq 0 ];then
/usr/local/nginx/sbin/nginx
if [ ps -C nginx --no-header| wc -l -eq 0 ];then
systemctl stop keepalived
fi
fi
在两台nginx分别执行脚本,绑定虚拟IP,抑制ARP广播
vi ip-config
#!/bin/bash
#description: Config realserver
VIP=192.168.254.88 #绑定你要设置的VIP
/etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
执行绑定脚本(脚本随便放哪里都可以)
./ip-config start
之后就是测试环境了!