keepalived和Rewrite重定向
1、HTTPS的作用
传输过程中的加密。
2、四层负载均衡的使用场景
2.1、MySQL服务
2.2、SSH代理端口
2.3、网站的负载均衡代理
3、全站HTTPS的配置方法
3.1.创建ssl_key
[root@lb01 ssl_key]
3.2.生成公钥私钥
[root@lb01 ssl_key]
[root@lb01 ssl_key]
3.3.设置nginx代理,并加入强制跳转
[root@lb01 ssl_key]
upstream game{
server 172.16.1.8:80;
server 172.16.1.7:80;
server 172.16.1.9:80;
}
server{
listen 80;
server_name cjml.com;
return 302 https://cjml.com;
}
server {
server_name cjml.com;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl_key/server.crt;
ssl_certificate_key /etc/nginx/ssl_key/server.key;
location /{
proxy_pass http://game;
include proxy_params;
}
}
3.4.重启nginx并测试
systemctl restart nginx
keepalived高可用(私网)
1.什么是高可用
一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。
部署在整个集群中的一个高可用软件,作用是创建一个VIP(虚拟IP),在整个集群中有且只有一个机器上生成VIP,当这台机器出现问题时,keepalived将自动将VIP切换至其他的某一台服务器上。,注意vip要和机器在同一个网段
部署keepalived
主机 | ip | 身份 |
lb01 |
192.168.15.5 |
keepalived master(主力机) |
lb02 |
192.168.15.6 |
keepalived backup(备用机) |
虚拟网卡 |
192.168.15.3 |
虚拟网络VIP |
1.先保证lb01和lb02的七层负载均衡一致
[root@lb01 conf.d]
[root@lb01 conf.d]
2.安装keepalived(所有的流量机器都需要安装)
[root@lb01 conf.d]
[root@lb02 conf.d]
3.配置keepalived
3.1配置主节点
[root@lb01 ~]
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.15.3
}
}
3.2配置备用节点
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.15.3
}
}
3.3启动测试
[root@lb01 keepalived]
[root@lb01 keepalived]
发现
[root@lb02 keepalived]
抢占式和非抢占式
1.抢占式:可能会造成报错或者延时 ,自动跳转
两个机器 如果一个宕机 跳到另一个,然后宕机的修好了,他如果优先级高的话他会抢夺回来流量,可能会报错或者延时
2.非抢占式:不会报错 非自动跳转(建议开启)
2.1.两个节点的state都必须配置为BACKUP
2.2.两个节点都必须加上配置 nopreempt
2.3.其中一个节点的优先级必须要高于另外一个节点的优先级。
两台服务器都角色状态启用nopreempt后,必须修改角色状态统一为BACKUP,唯一的区分就是优先级。
高可用时如果出现脑裂问题时怎么解决
脑裂:一台机器关闭了nginx 跳转不到另一台机器,一直在报错,
不只是keepalived关闭,nginx关闭时也需要切换服务器
cat /etc/keepalived/check.sh
ps -aux | grep [n]ginx
if [ $? -ne 0 ];then
systemctl restart nginx;
sellp3;
ps -aux | grep [n]ginx
if [ $? -ne 0 ];then
systemctl stop keepalived;
fi
fi
vrrp_script check_web {
script "/etc/keepalived/check.sh"
interval 5
}
track_script {
check_web
}
动静分离
1、location的五种匹配策略
优先级 = > * > (~ = ~*) > /
= 完全匹配
* 以xxx开头
~ 正则匹配(区分大小写)
~* 正则匹配(不区分大小写)
/ 全部匹配
例子1.证明=是完全匹配
[root@web02 conf.d]
server{
server_name cjml.com;
listen 80;
location /{
default_type text/html;
return 200 "location /";
}
location =/lol{
default_type text/html;
return 200 "location =lol";
}
}
例子二:实现动静分离nginx代理图片
[root@web02 conf.d]
server{
server_name img.com;
listen 80;
location /{
root /opt/html;
index index.html;
}
location ~* \.(jpg|jpeg|mp4)$ {
root /opt/html/img;
}
}
Rewrite四种重定向策略
名字 | 作用 |
last |
本条规则匹配完成后,停止匹配,不再匹配后面的规则(在Nginx内部按照重定向的规则重新访问一遍) |
break |
本条规则匹配完成后,停止匹配,不再匹配后面的规则(在Nginx内部按照重定向的规则去对应的跟目录(root 指定的路径)访问) |
redirect |
返回302临时重定向,地址栏会显示跳转后的地址(浏览器不记录缓存) |
permanent |
返回301永久重定向,地址栏会显示跳转后的地址(浏览器记录缓存,下一次访问不走nginx服务,直接在浏览器跳转) |
作用:Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程
格式:rewrite [匹配内容] [从定向到的内容] [重定向规则];
案例1:要求访问192.168.15.8,临时重定向到百度
server{
server_name img.com;
listen 80;
location / {
rewrite (.*) https://www.baidu.com redirect;
}
}
案例2:要求访问192.168.15.8,永久重定向到百度
rewrite (.*) https://www.baidu.com permanent;
案例3:要求访问192.168.15.8/last,重定向到192.168.15.8/test
location =/last{
rewrite (.*) /test last;
}
案例4:要求访问192.168.15.8/break,重定向到192.168.15.8下面的test目录。
location = /break{
rewrite (.*) /test break;
}