nginx的https
证书可以根据你的域名和服务器服务商去进行签发
,
比如
:
阿里云 腾讯云 百度云 华为云等
这里使用的是腾讯云
:
下载证书
:
选择
nginx:
下载之后传递到服务器上。
下面开始配置nginx的https:
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
进行检测。