nginx的https与动态负载均衡

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 进行检测。

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

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

相关文章

【A-010】基于SSH的宠物狗商城系统(含论文)

【A-010】基于SSH的宠物狗商城系统(含论文) 开发环境: Eclipse/MyEclipse、Tomcat8、Jdk1.8 数据库: MySQL 项目介绍: 在科学技术飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道&am…

Cesium实现渐变面

一、效果图 二、实现思路 使用着色器,通过纹理坐标和其他参数计算出材质的颜色和透明度。通过给定的颜色、漫反射强度和透明度,计算出最终的反射颜色和透明度,并且根据给定的中心点位置和当前像素的纹理坐标,计算出距离中心的距离…

怎么快速上手虚拟化(容器)技术——以 Docker 为例

Docker 整体介绍 Docker 是一种使用 Go 语言开发的容器工具。所谓容器,实际上是一种虚拟化技术,用于为应用提供虚拟化的运行环境,相较于虚拟机具有轻量级、低延迟的特性。 下面是对上述介绍的说明: 应用程序运行需要一定的依赖…

在 C#和ASP.NET Core中创建 gRPC 客户端和服务器

关于gRPC和Google protobuf gRPC 是一种可以跨语言运行的现代高性能远程过程调用 (RPC) 框架。gRPC 实际上已经成为 RPC 框架的行业标准,Google 内外的组织都在使用它来从微服务到计算的“最后一英里”(移动、网络和物联网)的强大用例。 gRP…

canvas画图,画矩形可拖拽移动,可拖拽更改尺寸大小

提示:canvas画图,画矩形,圆形,直线,曲线可拖拽移动 文章目录 前言一、画矩形,圆形,直线,曲线可拖拽移动总结 前言 一、画矩形,圆形,直线,曲线可拖…

壁纸小程序Vue3(分类页面和用户页面基础布局)

1.配置tabBar pages.json "tabBar": {"color": "#9799a5","selectedColor": "#28B389","list": [{"text": "推荐","pagePath": "pages/index/index","iconPath&quo…

6.6物联网RK3399项目开发实录-驱动开发之LED灯的使用(wulianjishu666)

90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】 链接:https://pan.baidu.com/s/1M3u8lcznKuXfN8NRoLYtTA?pwdc53f LED 使用 前言 AIO-3399J 开发板上有 2 个 LED 灯,如下表所示: 可通过使用 LED 设备子系统或者直…

EXCEL-VB编程实现自动抓取多工作簿多工作表中的单元格数据

一、VB编程基础 1、 EXCEL文件启动宏设置 文件-选项-信任中心-信任中心设置-宏设置-启用所有宏 汇总文件保存必须以宏启动工作簿格式类型进行保存 2、 VB编程界面与入门 参考收藏 https://blog.csdn.net/O_MMMM_O/article/details/107260402?spm1001.2014.3001.5506 二、…

云计算探索-剖析虚拟化技术

引言 虚拟化技术,作为现代信息技术架构的核心构成元素,以其独特的资源抽象与模拟机制,成功地瓦解了物理硬件与操作系统间的刚性连接,开创了一个资源共享、灵活调配的崭新天地。本文将详细解析虚拟化技术的内涵、发展历程、分类及特…

Android 天气APP(二)获取定位信息

<LinearLayout xmlns:android“http://schemas.android.com/apk/res/android” xmlns:app“http://schemas.android.com/apk/res-auto” xmlns:tools“http://schemas.android.com/tools” android:gravity“center” android:layout_width“match_parent” android:la…

编曲知识16:贴唱混音思路 录音 对轨 降噪

贴唱混音思路 录音 对轨 降噪小鹅通-专注内容付费的技术服务商https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_6607f17ae4b092c1684f438a?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 混音思路 贴唱混音、分轨混音 贴唱:由翻唱混音发展而来,指仅处理人声和伴奏…

二期 1.1 微服务是什么?微服务与分布式架构的区别是什么?SpringBoot与Spring Cloud的区别是什么?

文章目录 前言一、单体架构二、微服务是什么?三、微服务与分布式的区别四、SpringBoot与Spring Cloud的区别?前言 欢迎大家来到二期Spring Cloud 微服务项目实战,首先我们应了解 单体架构是什么?它有哪些问题? 微服务是什么,与分布式架构的区别,Java中微服务框架Spring…

Spark学习

目录 一&#xff0c;Spark是什么 二&#xff0c;Spark的运行模式 三&#xff0c;Spark运行的角色有四类&#xff1a; 四&#xff0c;用户程序从最开始的提交到最终的计算执行&#xff0c;需要经历以下几个阶段&#xff1a; 五&#xff0c;存在Master单点故障&#xff08;SPO…

SOC内部集成网络MAC外设+ PHY网络芯片方案:PHY芯片基础知识

一. 简介 本文简单了解一下 "SOC内部集成网络MAC外设 PHY网络芯片方案" 这个网络硬件方案中涉及的 PHY网络芯片的基础知识。 二. PHY芯片基础知识 PHY 是 IEEE 802.3 规定的一个标准模块。 1. IEEE规定了PHY芯片的前 16个寄存器功能是一样的 前面说了&#xf…

# 达梦数据库知识点

达梦数据库知识点 测试数据 -- SYSDBA.TABLE_CLASS_TEST definitionCREATE TABLE SYSDBA.TABLE_CLASS_TEST (ID VARCHAR(100) NOT NULL,NAME VARCHAR(100) NULL,CODE VARCHAR(100) NULL,TITLE VARCHAR(100) NULL,CREATETIME TIMESTAMP NULL,COLUMN1 VARCHAR(100) NULL,COLUMN…

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

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

腾讯云轻量2核2G3M云服务器优惠价格61元一年,限制200GB月流量

腾讯云轻量2核2G3M云服务器优惠价格61元一年&#xff0c;配置为轻量2核2G、3M带宽、200GB月流量、40GB SSD盘&#xff0c;腾讯云优惠活动 yunfuwuqiba.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云轻量2核2G云服务器优惠价格 腾讯云&#xff1a;轻量应用服务器100%CPU性能…

YOLOv9改进策略 :卷积魔改 | 感受野注意力卷积运算(RFAConv)

💡💡💡本文改进内容:感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题 💡💡💡使用方法:代替YOLOv9中的卷积,使得更加关注感受野注意力,提升性能 💡💡💡RFAConv…

Go的数据结构与实现【Binary Search Tree】

介绍 本文用Go将实现二叉搜索树数据结构&#xff0c;以及常见的一些方法 二叉树 二叉树是一种递归数据结构&#xff0c;其中每个节点最多可以有两个子节点。 二叉树的一种常见类型是二叉搜索树&#xff0c;其中每个节点的值都大于或等于左子树中的节点值&#xff0c;并且小…

Chatgpt掘金之旅—有爱AI商业实战篇(二)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、前言&#xff1a; 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代&#xff0c;作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…