nginx的https与动态负载均衡

news/2024/4/30 9:20:26

nginx的https

证书可以根据你的域名和服务器服务商去进行签发 , 比如 : 阿里云 腾讯云 百度云 华为云等
这里使用的是腾讯云 :
下载证书 :

选择 nginx:
下载之后传递到服务器上。

下面开始配置nginxhttps:

1. 解压下载的证书包

cd /etc/ssl
unzip xxcc.dwa_nginx.zip
mv xxcc.dwa_nginx/* ./
2. nginx 配置 https
server
{
listen 443 ssl;
server_name yuxiaodong.club;
root /www/wwwroot/blog-web;
index index.php index.html;
ssl_certificate /etc/ssl/yuxiaodong.club_bundle.crt;
ssl_certificate_key /etc/ssl/yuxiaodong.club.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 10s;
}
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
error_log /www/server/nginx/logs/yuxiaodong_error.log;
3. 域名重定向到 https
server
{
listen 80;
server_name yuxiaodong.club;
rewrite ^/(.*)$ https://yuxiaodong.club:443/$1 permanent;
error_log /www/server/nginx/logs/yuxiaodong_error.log;
}

nginx动态负载均衡

Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件。
服务发现以及注册:当服务 Producer 启动时,会将自己的 Ip/host 等信息通过发送请求告 Consul Consul接收到 Producer 的注册信息后,每隔一段时间会向 Producer 发送一个健康检查的请求,检验Producer 是否健康。
服务调用:当 Consumer 请求 Product 时,会先从 Consul 中拿到存储 Product 服务的 IP Port 的临时表(temp table),从 temp table 表中任选一个 · Producer IP Port , 然后根据这个 IP和 Port ,发送访问请求;temp table 表只包含通过了健康检查的 Producer 信息,并且每隔一段时间更新。
consul 的安装
Consul 安装包下载地址: https://www.consul.io/downloads
(1) 下载完后,解压,得到一个可执行文件 consul
解压: unzip consul_1.9.4_linux_amd64.zip
(2) 将这个文件移动到全局变量环境中
Mv consul /usr/local/bin/
(3) 验证安装
Consul version
consul 常用命令

agent命令

描述:运行一个consul agent
使用案例:consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=ali -
bind=192.168.63.101 -ui -client=0.0.0.0
参数含义:
agent
-server表示启动的是一个服务
-bootstrap-expect 1 表示等待多少个节点再启动,这里1个,就是自己一个就启动了
-node=texun_1 就是给consul服务起个别名为ali_1
-bind=172.17.114.76 绑定内网ip
-data-dir /opt/data1 数据存储目录为/opt/data1
-ui 启动默认ui界面
-client consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是
127.0.0.1,可指定允许客户端使用什么ip去访问

 members命令

描述:将 agent 加入到 consul 集群
使用案例: consul members
join 命令
描述:列出 consul cluster 集群中的 members
使用案例: consul join 192.168.63.101
leave 命令
描述:将节点移除所在的集群
使用案例: consul leave 192.168.63.101
nginx 配置
nginx配置如下:
upstream blogs {
server www.starsky-nginx.com:8080;
upsync 192.168.63.102:8500/v1/kv/upstreams/nginx_test upsync_timeout=6m
upsync_interval=500ms upsync_type=consul strong_dependency=off;
upsync_dump_path /vhost/server_test.conf;
include /vhost/server_test.conf;
}
server
{
listen 80;
server_name www.blog-nginxs.com;
index index.html index.php;
location ~ \.php$ {
proxy_pass http://blogs;
}
}
解释:
192.168.63.102:8500/v1/kv/upstreams =》 连接consul的api资源地址
nginx_test =》 相当于我们自己在consul中自定义的key
upsync_timeout =》 超时时间6分钟
upsync_interval =》 定时获取信息的时间
upsync_type =》 类型
strong_dependency=on; =》 是否依赖consul运行
upsync_dump_path =》 拉取之后申请配置文件
启动consul:consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=ali
-bind=192.168.63.101 -ui -client=0.0.0.0
新增负载均衡nginx配置文件:
1. cd /vhost/
2. touch server_nginx.conf
向consul新增nginx服务器:
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}'
http://192.168.63.101:8500/v1/kv/upstreams/nginx_test/192.168.63.102:80
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}'
http://192.168.63.101:8500/v1/kv/upstreams/nginx_test/192.168.63.103:80
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}'
http://101.35.53.212:8500/v1/kv/upstreams/nginx_test/101.35.53.212:80
 高可用

keepalived概述  

Keepalived Linux 下一个轻量级的高可用解决方案,它与 HeartBeat RoseHA 实现的功能类似,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat 是一个专业的、功能
完善的高可用软件,它提供了 HA软件所需的基本功能,比如心跳检测和资源接管,监测集群中的系统服 务,在集群节点间转移共享 IP 地址的所有者等, HeartBeat 功能强大,但是部署和使用相对比较麻烦;与 HeartBeat 相比, Keepalived 主要是通过虚拟路由冗余来实现高可用功能,虽然它没有 HearBeat 功能强大,但 Keepalived 部署和使用非常简单,所有配置只需一个配置文件即可完成。
 
什么是 keepalived
Keepalived 起初是为 LVS 设计的,专门用来监控集群系统中各个服务节点的状态。它根据 TCP/IP 参考模型的第三、第四和第五层交换机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后, Keepalived又可以自动将此服务节点重新加入服务器集群中,这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点
keepalived 的安装
1. 安装Keepalived需要的扩展
[root@localhost keepalived]# yum install gcc gcc-c++ openssl openssl-devel
[root@localhost home]# wget -q https://www.keepalived.org/software/keepalived-
1.2.18.tar.gz
2. 解压Keepalived并安装
[root@localhost home]# tar -zxvf keepalived-1.2.18.tar.gz
[root@localhost home]# cd keepalived-1.2.18
[root@localhost keepalived-1.2.18]# ./configure --prefix=/usr/local/keepalived
[root@localhost keepalived-1.2.18]# make && make install
3. 将 keepalived 安装成 Linux 系统服务
因为没有使用 keepalived 的默认路径安装(默认是/usr/local) ,安装完成之后,需要做一些工
作 复制默认配置文件到默认路径
[root@localhost keepalived-1.2.18]# mkdir /etc/keepalived
[root@localhost keepalived-1.2.18]# cp
/usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
4. 复制 keepalived 服务脚本到默认的地址
[root@localhost keepalived-1.2.18]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived
/etc/init.d/
[root@localhost keepalived-1.2.18]# cp /usr/local/keepalived/etc/sysconfig/keepalived
/etc/sysconfig/
[root@localhost keepalived-1.2.18]# ln -s /usr/local/keepalived/sbin/keepalived
/usr/sbin/
5. 设置 keepalived 服务开机启动
[root@localhost keepalived-1.2.18]# chkconfig keepalived on

 keepalived的主从配置

 1.主的配置

! Configuration File for keepalived
global_defs {
router_id LVS_MASTER
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx.sh" ##检测nginx状态的脚本
interval 2 ##检测的时间间隔
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 79
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.63.104
}
track_script {
chk_nginx
}
}

 从的配置

! Configuration File for keepalived
global_defs {
router_id LVS_MASTER
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx.sh" ##检测nginx状态的脚本
interval 2 ##检测的时间间隔
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 79
priority 90
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.63.104
}
track_script {
chk_nginx
}

完成以上配置后,主备服务器能够实现ip漂移,但是我们需要的功能实际是keepalived检测nginx负载均衡服务,一旦nginx负载均衡服务宕机,keepalived需要尝试去启动nginx,否则停止keepalived,让ip漂移到备用机上。下面是检测的脚本:

#! /bin/bash
START_NGINX="service nginx start"
LOG_FILE="/usr/local/nginx/logs/nginx_upstreams.log"
HAPS=`ps -C nginx --no-header |wc -l`
date "+%Y-%m-%d %H:%M:%S" >> $LOG_FILE
echo "check nginx status" >> $LOG_FILE
if [ $HAPS -eq 0 ];then
echo $START_HAPROXY >> $LOG_FILE
service nginx start
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
echo "start nginx failed, killall keepalived" >> $LOG_FILE
killall keepalived
service keepalived stop
fi
fi

 而在keepalived的配置中我们可以看到配置了

vrrp_script chk_nginx {
script "/etc/keepalived/nginx.sh" ##检测nginx状态的脚本
interval 2 ##检测的时间间隔
weight 2
}
track_script {
chk_nginx
}
keepalived 的配置就是在引入与执行 nginx 的脚本对 nginx 进行检测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11535.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙OS开发实例:【应用事件打点】

简介 传统的日志系统里汇聚了整个设备上所有程序运行的过程流水日志,难以识别其中的关键信息。因此,应用开发者需要一种数据打点机制,用来评估如访问数、日活、用户操作习惯以及影响用户使用的关键因素等关键信息。 HiAppEvent是在系统层面…

安装Docker(CentOS)

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。 官方网站上…

蓝桥杯 - 受伤的皇后

解题思路: 递归 回溯(n皇后问题的变种) 在 N 皇后问题的解决方案中,我们是从棋盘的顶部向底部逐行放置皇后的,这意味着在任何给定时间,所有未来的行(即当前行之下的所有行)都还没…

MySQL数据库(一)

文章目录 1.MySQL8.0安装配置1.安装教程2.启动方法3.启动注意事项4.Navicat使用5.Navicat演示 2.MySQL数据库基本介绍1.三层结构2.SQL语句分类 3.MySQL数据库基本操作1.创建数据库2.不区分大小写的校对规则3.查看、删除数据库4.备份和恢复数据库1.备份数据库db01和db02&#xf…

Python(乱学)

字典在转化为其他类型时,会出现是否舍弃value的操作,只有在转化为字符串的时候才不会舍弃value 注释的快捷键是ctrl/ 字符串无法与整数,浮点数,等用加号完成拼接 5不入??? 还有一种格式化的方法…

人工智能产业应用--具身智能

五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时,“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角,尤其是在具身智能的领域。具身智能是一种思想,强调智能体通过与其环境的直接物理互动来实现智能行为。然…