# Nginx
# 安装
Nginx的官网比较杂,官网安装介绍如下https://nginx.org/en/docs/install.html (opens new window) 下载地址如下https://nginx.org/en/download.html (opens new window) 或者直接wget安装解压
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar zxvf nginx-1.6.2.tar.gz
# 常用conf
nginx.conf
# user nginx;
worker_processes auto;
error_log /usr/local/nginx/logs/error.log notice;
pid /usr/local/nginx/nginx.pid;
events {
worker_connections 2048;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/nginx/logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /usr/local/nginx/conf/conf.d/*.conf;
}
具体应用conf
upstream api {
server xx.xxx.xx.xxx:9891;
#server xx.xxx.xx.xxx:9891;
}
server {
listen 9897 ;
server_name localhost;
location / {
root /usr/local/nginx/html;
index index.html;
}
location /api/ {
proxy_pass http://api/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 命令
重启
nginx -s reload
# 常见问题
pid误删
ps -ef | grep nginx
// 找到master progress
echo 74874 > nginx.pid
# nginx+lvs 双机主备
# 安装keepalived
// 官网
https://www.keepalived.org/download.html
// 版本
Keepalived for Linux - Version 2.0.18 - July 26, 2019 - MD5SUM:={9d1dc77a0e4c628daf9fe453701b54be}
// 上传到/home/software
scp keepalived-2.0.18.tar.gz root@xx.xxx.xx.xxx:/home/software
// 解压
tar -zxvf keepalived-2.0.18.tar.gz
// 配置
./configure --prefix=/usr/local/keepalived --sysconf=/etc
// make
make && make install
// 查看
whereis keepalived
// 位置
/etc/keepalived /usr/local/keepalived
# keepalived.conf master配置
! Configuration File for keepalived
global_defs {
# 路由id,主键
router_id keep_105
}
# 计算机节点
vrrp_instance VI_1 {
# 表示当前105为主节点
state MASTER
# 当前示例绑定的网卡
interface eth0
# 保证主备节点一致
virtual_router_id 51
# 优先级,权重
priority 100
# 主备间同步检查的时间间隔
advert_int 1
# 认证授权密,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.161
}
}
# keepalived.conf
! Configuration File for keepalived
global_defs {
# 路由id,主键
router_id keep_156
}
# 计算机节点
vrrp_instance VI_1 {
# 表示当前105为主节点
state BACKUP
# 当前示例绑定的网卡
interface eth0
# 保证主备节点一致
virtual_router_id 51
# 优先级,权重
priority 80
# 主备间同步检查的时间间隔
advert_int 1
# 认证授权密,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
192.168.1.161
}
}
# 命令
// 启动
/usr/local/keepalived/sbin/keepalived
// 查看是否启动,查看eth0网卡是否多了ip
ip addr
// 或者curl访问接口
curl -H eyJhbGciOiJIUzUxMiJ9.eyJjcmVhdGVkIjoxNjY1MzY4MDMwMDM2LCJleHAiOjE2NjU5NzI4MzAsInVzZXJpZCI6IjIyMDc3ODE2MDkifQ.b6qptFFPkH8eIPgvEacPIjXNs6dNYx8d8Jw5bWM_r9JLGjJp3ywjcrwD1RuoF6w012v4brMb-GNu5egLlzkhBg -X GET http://192.168.1.161:9891/system/timestamp -i
// 或者查看启动日志
journalctl -u keepalived.service
// 结束
ps -ef | grep keepalived
kill -9 那个pid后面跟1的进程
# 注册到服务
// 作为服务注册到linux
cd /home/software/keepalived-2.0.18/keepalived/etc/init.d
cp keepalived /etc/init.d
cd /home/software/keepalived-2.0.18/keepalived/etc/sysconfig
cp keepalived /etc/sysconfig
// 刷新
systemctl daemon-reload
// 启动 关闭
systemctl start keepalived.service
systemctl stop keepalived.service
// 注意关闭后可能虚拟ip去到了从节点,导致当台机器无法查看
# 自动重启
! Configuration File for keepalived
global_defs {
# 路由id,主键
router_id keep_105
}
vrrp_script check_nginx_alive {
script "/etc/keepalived/check_and_restart_nginx.sh"
interval 2 #每隔两秒执行一次脚本
weight 10 # 如果脚本运行失败,则升级权重+10
}
# 计算机节点
vrrp_instance VI_1 {
# 表示当前105为主节点
state MASTER
# 当前示例绑定的网卡
interface eth0
# 保证主备节点一致
virtual_router_id 51
# 优先级,权重
priority 100
# 主备间同步检查的时间间隔
advert_int 1
# 认证授权密,防止非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx_alive
}
# 虚拟IP
virtual_ipaddress {
192.168.1.161
}
}
check_and_restart_nginx.sh
#!/bin/bash
# 变量lineCount记录nginx的进程数目
LineCount=`ps -C nginx --no-header | wc -l`
if [ $LineCount -eq 0 ];then
nginx -c /etc/nginx/nginx.conf
sleep 3
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
killall keepalived
fi
fi