Nginx的高可用 - Redis非关系型数据库
在使用 Nginx 做反向代理或者负载均衡的时候,都是以 Nginx 为入口,如果 Nginx 宕机了,那么所有的服务都无法正常提供,影响非常严重。所有我们需要保证 nginx 高可用,就是配置备份机,前一个挂了,还有后一个(一个主机一个备份机就可以了)。高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
目录
1.Nginx的高可用
1.1高可用的基本介绍
在使用 Nginx 做反向代理或者负载均衡的时候,都是以 Nginx 为入口,如果 Nginx 宕机了,那么所有的服务都无法正常提供,影响非常严重。所有我们需要保证 nginx 高可用,就是配置备份机,前一个挂了,还有后一个(一个主机一个备份机就可以了)。
高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果一个系统能够一直提供服务,那么这个可用性则是百分之百,但是我们不能保证一个系统能永远不出问题,所以我们只能通过设计来尽可能的去减少由于系统的故障所造成的影响。
配置准备:
1、需要的环境
两台 Linux 并各自安装 Nginx 和 keepalived2、配置高可用的准备工作
(1)需要两台服务器 192.168.17.129 、192.168.17.131
(2)在两台服务器安装 Nginx(可以参考前面文章http://t.csdn.cn/DHj2D)
(3)在两台服务器安装 keepalived3、两台服务器都安装 keepalived
4、完成高可用配置(主从配置)
1.2、keepalived
我们可以通过 keepalived 来实现 Nginx 的高可用,keepalived 是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。Keepalived的作用是检测 web 服务器的状态,如果有一台 web 服务器死机或工作出现故障,Keepalived 将能检测到,并将有故障的 web 服务器从系统中剔除,当web服务器工作正常后 Keepalived 会自动将该 web 服务器加入到服务器群中。这些工作全部都会自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。keepalived 可以理解为一个健康检查的软件。
高可用至少需要 2 台服务器,主备都得装上keepalived,当请求访问主服务器时,备份服务器会一直检查主服务器的状态。
keepalived 需要绑定一个虚拟地址 vip ( Virtual IP Address ) ,这个虚拟 ip 地址绑定在哪台服务器上请求就会发送到哪台服务器,一开始会绑定在主服务器上。
1.2、安装 keepalived
首先准备两台服务器,这里我们准备了两台虚拟机。分别在这两台服务器上安装 Nginx 和 keepalived。
安装 keepalived 使用 yum 方式直接安装即可,该方式会自动安装依赖。安装 keepalived 命令:
(1)准备两台nginx服务器. 192.168.223.147 192.168.223.148 必须安装了nginx
(2) 需要在每一个nginx服务器上安装keepalived
yum install keepalived 安装keepalived
rpm -q -a keepalived 检查是否安装keepalived默认安装路径: /etc/keepalived
(3)修改keepalived的配置文件内容。
修改/etc/keepalived/keepalivec.conf 配置文件
把上面修改好的内容,分别放到keepalived目录下替换原来的配置。
(4) /usr/local/src/nginx_check.sh脚本文件 添加检测脚本,检查Nginx是否还活着.
并分别在两台服务器上放入指定目录.
分别启动---keepalived:systemctl start keepalived.service
查看进程:ps -ef | grep keepalived
杀死进程: kill -9 端口号
开启两台nginx服务:
sbin/nginx 启动nginx
sbin/nginx -s stop 关闭nginx
sbin/nginx -s reload 重新加载nginx配置#!/bin/bash # 检查是否开启nginx A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then # 开启nginx nginx脚本所在的路径 /usr/soft/nginx/sbin/nginx sleep 2 # 开启nginx失败 则执行关闭keepalived if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then pkill -9 keepalived fi fi
访问虚拟ip:
关闭主节点nginx:
/usr/soft/nginx/sbin/nginx -s stop
关闭主节点keepalived:
systemctl stop keepalived.service注意防火墙端口的放行
2.Redis非关系型数据库
2.1 非关系型数据库
NoSql: [Not Only Sql不仅仅是sql]. 它是对所有非关系型数据库的一种统称。非关系数据库它们之间不存在任何的关联关系。 它的数据结构: key-value模式--而且数据也可以持久化到磁盘上。
常见的非关系数据库的种类:
redis: 典型的非关系数据库
mogodb: 它是介于关系型和非关系之间。
hbase: 数据库【海量数据】
2.2 什么是redis
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
redis它是一个开源的数据库,缓存的服务器,它里面可以存放字符串,hash,列表,集合数据类型的数据,它的计算基于内存进行计算的。而且数据也可以持久化到磁盘中。 而且它也提高了哨兵模式以及集群模式来提高redis的可用性。
2.3 redis特点 【为什么使用】
1.Redis读取的速度是110000次/s,写的速度是81000次/s
2.原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
---影响redis性能的因素:内存而不是多线程
3.支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
4.持久化--磁盘--防止数据丢失
5.官方不支持window系统,但是又第三方版本。 linux系统。
2.4 如何安装redis
redis是使用c语言编写的一款软件。
1.安装redis需要的环境/usr/soft/下执行。yum install -y gcc-c++
2.解压redis压缩文件。 tar -zxvf xxx.tar.gz
3.进入解压目录 并进行编译和安装
make
make install
4.启动redis服务:redis-server redis.conf
Ctrl+C可以结束服务
查询进程: ps -ef | grep redis
5.客户连接redis服务
redis-cli -h ip -p port
-h:表示连接redis服务所在的ip
-p:表示连接redis服务的端口号redis-cli: 表示连接本地的redis服务
2.5 简单对redis配置文件了解
修改redis配置文件: vi /usr/soft/redis-6.2.7
259行 daemonize no: 设置redis服务启动时是否为守护进程
98行 port 6379 修改redis的服务的端口号 (更改端口号防火墙要注意放行)
防火墙放行端口号: firewall-cmd --add-port=端口号/tcp --zone=public --permanent
注意: 重启防火墙---systemctl restart firewalld
75行 bind * -::* 设置允许哪些ip连接redis服务器
94行 protected-mode no 默认是yes
2.6 redis也提供了客户端界面
下载地址
百度下载:链接: https://pan.baidu.com/s/1GjNFwbmksA1JhguHgcAcSQ 提取码: 3pcm
注意: 必须redis服务端设置了允许任意ip连接
2.7 redis中常用的命令
(1)关于对key操作的命令
keys *: 查看redis中所有的key
exists key: 判断指定的key是否存在。存在返回1 否则返回0
del key: 删除指定的key
expire key seconds: 为指定的key设置过期时间。
(2)关于库的命令:
默认redis中存在16个库。
select n: 选中库 n=0~15
flushdb: 清空当前数据库
flushall: 清空所有库的数据
(3) redis支持数据类型中常用命令
redis中存放的数据类型非常多,而我们使用最多的: 字符串类型,Hash类型,List队列类型, Set集合类型, SortSet有序集合类型。
<1>支持字符串类型
redis存储数据的格式: key--value格式。 这里的key都是string类型,而我们说的redis支持的类型。指的是value的数据类型。存放的大小512M.
set key value: 存储字符串类型的value.
get key: 根据key获取对应的value字符串值。
mset key value key value ...: 存储多个字符串类型的value
mget key key key...:获取多个key对应的value字符串值
setnx key value: 如果存在指定key,则不存入,如果不存在则存入。
incr key: 对指定的key的value值进行递增。key对应的value必须为整型字符串
decr key: 对指定的key的value值进行递减。
incrby key number: 按照number值进行递增
更多推荐
所有评论(0)