nginx的https
证书可以根据你的域名和服务器服务商去进行签发 , 比如 : 阿里云 腾讯云 百度云 华为云等
这里使用的是腾讯云 :
下载证书 :
选择 nginx:
下载之后传递到服务器上。
下面开始配置nginx的https:
- 解压下载的证书包
cd /etc/ssl
unzip xxcc.dwa_nginx.zip
mv xxcc.dwa_nginx/* ./
-
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; -
域名重定向到 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漂移到备用机上。下面是检测的脚本:
bash
#! /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的配置中我们可以看到配置了
bash
vrrp_script chk_nginx {
script "/etc/keepalived/nginx.sh" ##检测nginx状态的脚本
interval 2 ##检测的时间间隔
weight 2
}
track_script {
chk_nginx
}
keepalived 的配置就是在引入与执行 nginx 的脚本对 nginx 进行检测。