Nginx
概述
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
配置
配置文件路径
/usr/local/nginx/conf
应用
1.Http服务器
Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
提供对外映射地址
location ~\.(jpg|png){
root /home/image
}
2.虚拟主机(不常用)
可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。(这里举个例子,前几年流行自己创建个个人网站来娱乐,如果要是每个人都买一台服务器来维护网站的话,费用是比较高的,很划不来,为了降低费用便催生出虚拟主机,就是在一台服务器上虚拟出多个"主机"出来,大家可以共用这一台服务器,费用当然就很低了,但是有个问题,我们知道nginx默认的端口是80,使用nigix访问静态网页的时候,是不用输入80端口就可以访问的,如果nginx的端口修改为别的端口号如81,那么访问的时候便需要输入端口号81才能访问。多个人共用一台服务器,访问地址不能以端口号作为区分网站的标志,因为谁也不想在输入访问地址的时候还带个端口号,大家掏的钱都是一样的,那么怎么让大家都使用80端口而且区分出不同的个人网站呢?这就用到了域名,不同的用户输入自己的域名就可以访问自己的网站。比如aaaa.com、bbbb.com两个域名,这两个域名对应着同一台服务器并且共用80端口)
让一台服务器虚拟出来多个主机(网站),例如个人网站的虚拟主机
server{
port:端口
server_name:域名
location
location...
}
3.反向代理,负载均衡(常用)
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
正向代理:翻墙
服务器A和代理服务器B合作访问需要被访问的服务器C
反向代理:天气查询
服务器A访问服务器B即可
服务器A不知道服务器C的存在
服务器B可以调用任意不同的服务器CDE…,服务器A不受影响
配置:
location / {
proxy_pass http:192.168.184.130:8080
}
负载均衡分类:
1.客户端负载均衡
dubbo+zookeeper
随机算法->地址->发送请求
缺点:集群管理和维护比较难,客户端必须是可控的
2.服务器端负载均衡
Nginx,客户端只需要访问一个地址,由Nginx反向代理管理和维护集群
这两种都有使用,具体情况具体分析使用
配置负载均衡:
严格的按照权重访问,即一下严格按照3:1访问
upstream tomcatlist{
server 192.168.226.130:8080 [weight=3];
server 192.168.226.131:8080 [weight=1];
....
ip_hash;
//ip_hash是zookeeper提供的一种负载策略,还有很多策略
//ip->hashcode,保证某一台客户端只访问一台服务器
}
server{
location / {
proxy_pass http://tomcatlist;
}
}
默认轮询
4.动静态分离
location ~.(jpg|png|js|css|html){
root /home
}
Nginx的高可用
KeeperAlived实现
它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题
Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA).VRRP (Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个)
安装:
1.前置环境:
安装openssl:yum install -y openssl openssl-devel
2.拷贝:
将压缩包放在
/etc/local/路径下
3.解压
tar -zxf keepalived-1.2.20.tar.gz
4.配置
cd keepalived-1.2.20
./configure --prefix=/usr/local/keepalived
5.编译安装
编译:make
安装:makeinstall
6.启动 ./keepalived
配置Keepalived为系统服务
1.新建文件夹
mkdir /etc/keepalived
2.文件拷贝
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
3.创建软连接
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
4.设置成开机启动服务
chkconfig keepalived on
5.开启服务
service keepalived start
开始配置高可用Nginx
1.新建心跳脚本文件
/usr/local/keepalived/nginx_check.sh
#!/bin/sh
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
2.修改配置文件:
/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
#配置主机名
router_id 192.168.101.134
}
#配置脚本,每隔两秒执行一次脚本
vrrp_script chk_nginx {
script "/usr/local/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
#配置当前节点为Master
state MASTER
#网卡为eth0
interface eth0
#两台电脑的值必须相同
virtual_router_id 51
#本机的真实ip
mcast_src_ip 192.168.101.134
#优先级
priority 100
advert_int 1
#配置组信息,两台服务器必须相同
authentication {
auth_type PASS
auth_pass 1111
}
#配置上面定义的脚本名称
track_script {
chk_nginx
}
#对外的虚拟ip
virtual_ipaddress {
192.168.101.150
}
}