淘淘商城29_nginx的使用02_反向代理及负载均衡和高可用

一、Ip区分虚拟主机(可以用EditPlus这个编辑器)

具体看视频:百度网盘

链接:https://pan.baidu.com/s/1Xv3nOLos9Qh7B9INLvl8Mw 
提取码:zjnt 

 

1. 查看内容

[root@localhost /]# cd /etc/sysconfig/network-scripts

[root@localhost network-scripts]# ls

执行命令查看内容

[root@localhost network-scripts]# vim ifcfg-eth0

2. 复制一份文件出来

/etc/sysconfig/network-scripts/ifcfg-eth0文件复制一份,命名为ifcfg-eth0:1

[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1

修改新文件里的两个内容

DEVICE=eth0:1

IPADDR=192.168.1.109

其他项不用修改

3. 再复制一份内容

cp ifcfg-eth0 ifcfg-eth0:2

DEVICE=eth0:2

修改192.168.1.110

4. ​​​​​​​重启虚拟机系统

二、​​​​​​​配置nginx基于ip地址的虚拟主机

1. ​​​​​​​Nginx的配置文件

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
     keepalive_timeout  65;
    server { #一个Server就是一个虚拟主机
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

2. ​​​​​​​基于ip的虚拟主机配置

server {
        listen       80;
        server_name  192.168.1.109;
        location / {
            root   html-109;
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  192.168.1.110;
        location / {
            root   html-110;
            index  index.html index.htm;
        }
    }

3. ​​​​​​​去nginx下修改配置文件,复制两个html文件夹,名字分别为  html-109   html-110

[root@localhost nginx]# cp html html-109 -r

[root@localhost nginx]# cp html html-110 -r

4. ​​​​​​​修改文件夹里的index.html

用于区分通过不同ip访问的首页

[root@localhost nginx]# vim html-109/index.html

5. ​​​​​​​110同上修改

[root@localhost nginx]# vim html-110/index.html

6. ​​​​​​​重启nginx,测试

测试url: 192.168.1.109     192.168.1.110

三、​​​​​​​基于端口的虚拟主机

1.​​​​​​​ 添加端口号配置

server {
        listen       81;
        server_name  192.168.1.109;
        location / {
            root   html-81;
            index  index.html index.htm;
        }   
    }
    server {
        listen       82;
        server_name  192.168.1.110;

         location / {
            root   html-82;
            index  index.html index.htm;
        }
    }

2. ​​​​​​​复制html文件,修改里面的index.html代码

​​​​​​​3. 修改文件

测试url  http://192.168.1.110:81/    http://192.168.1.110:82/

四、​​​​​​​基于域名的虚拟主机

最有用的虚拟主机配置方式。一个域名只能绑定一个ip地址,一个ip地址可以被多个域名绑定。

 

1. ​​​​​​​设置域名和ip的映射关系

修改window的hosts文件:

C:\Windows\System32\drivers\etc

工具链接地址:

链接:https://pan.baidu.com/s/10iY6XJNT_1xZ0O17VLhAZg 
提取码:4d6p 

 

2. ​​​​​​​基于域名的虚拟主机配置

2.1 修改配置文件

server {
        listen       80;
        server_name  www.cctv.com;
        location / {
            root   html-www;
            index  index.html index.htm;
        }  
    }
    server {
        listen       80;
        server_name  hehe.cctv.com;
        location / {
            root   html-hehe;
            index  index.html index.htm;
        }   
    }

修改配置文件后,需要nginx重新加载配置文件。

2.2 复制文件

修改内容

2.3 ​​​​​​​重启nginx 

需要使用工具修改host文件,使用管理员权限运行这个工具,使用这个工具修改host文件的原理是绕开了DNS的解析.

2.4 测试url:www.cctv.com

五、Nginx的反向代理

输入网址后,域名解析器将网址解析为一个IP,通过这个IP访问的服务器

比如:百度   www.baidu.com   

它的IP为61.135.169.125,这个ip可能会变,它只是就近选择的百度的服务器,因为百度的服务器遍布全国

1. 反向代理与正向代理

正向代理:

反向代理:

2. ​​​​​​​使用nginx实现反向代理

Nginx只做请求的转发,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。

2.1 ​​​​​​​安装JDK和 Tomcat

在一个虚拟机上创建两个tomcat实例,模拟多个服务器。

安装过程就不说了,之前的文章中有详细的安装步骤

这是链接:https://mp.csdn.net/postedit/85229049

2.2 创建好两个tomcat后

2.3 ​​​​​​​修改tomcat2的端口号

[root@localhost tomcats]# vim tomcat2/conf/server.xml

2.4 ​​​​​​​修改三个地方的端口号如下图

2.5 ​​​​​​​启动tomcat,测试

[root@localhost tomcats]# tomcat1/bin/startup.sh

2.6 ​​​​​​​修改首页显示

为了区分访问的的服务器,修改下tomcat的首页内容

[root@localhost tomcats]# vim tomcat1/webapps/ROOT/index.jsp

把 tomcat1和tomcat2都修改了

3. ​​​​​​​需求

通过访问不同的域名访问运行在不同端口的tomcat

8080.cctv.com 访问运行8080端口的tomcat

8081.cctv.com 访问运行8081端口的tomcat

4. ​​​​​​​域名需要配置host文件:

4.1 Nginx的配置

upstream tomcatserver1 {
	server 192.168.1.108:8080;
    }
    upstream tomcatserver2 {
	server 192.168.1.108:8081;
    }
   server {
        listen       80;
        server_name  8080.cctv.com;
        location / {
            proxy_pass   http://tomcatserver1;
            index  index.html index.htm;
        }     
    }
    server {
        listen       80;
        server_name  8081.cctv.com;
        location / {
            proxy_pass   http://tomcatserver2;
            index  index.html index.htm;
        } 
    }

如果在同一个域名下有多台服务器提供服务,此时需要nginx负载均衡。

4.2 ​​​​​​​测试:

  1. cctv.com
  2. Cctv.com

nginx只是做了一个请求的转发,而没有做任何的业务处理

六、负载均衡

​​​​​​​1. 什么是负载均衡

负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

2. ​​​​​​​需求

nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。

nginx负载均衡服务器:192.168.1.108

tomcat1服务器:192.168.1.108:8080

tomcat2服务器:192.168.1.108:8081

3. ​​​​​​​配置nginx的负载均衡

测试:

8080.cctv.com,   第一次访问 8080服务器,第二次刷新访问8081服务器

4. ​​​​​​​配置负载均衡的权重

这个可以根据服务器的配置来进行分配,服务器配置越高,分配的权重可以越大,访问次数也就越多,权重默认是1

节点说明:

在http节点里添加:



#定义负载均衡设备的 Ip及设备状态

upstream myServer {   



    server 127.0.0.1:9090 down;

    server 127.0.0.1:8080 weight=2;

    server 127.0.0.1:6060;

    server 127.0.0.1:7070 backup;

}

在需要使用负载的Server节点下添加

proxy_pass http://myServer;



upstream 每个设备的状态:



down 表示单前的server暂时不参与负载

weight  默认为1.weight越大,负载的权重就越大。

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout:max_fails 次失败后,暂停的时间。

backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

七、高可用(keepalived)

1. 安装环境

su - root

yum -y install kernel-devel*

yum -y install openssl-*

yum -y install popt-devel

yum -y install lrzsz

yum -y install openssh-clients

yum -y install libnl libnl-devel popt

2. 安装keepalived

2.1 

将keepalived-1.2.15.tar.gz上传到服务器/usr/local/下。

cd /usr/local

tar -zxvf keepalived-1.2.15.tar.gz

cd keepalived-1.2.15

执行配置命令

./configure --prefix=/usr/local/keepalived

2.2 编译

make

2.3 安装

make install

至此安装成功

2.4 拷贝执行文件

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

2.5、将init.d文件拷贝到etc下,加入开机启动项

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

2.6、将keepalived文件拷贝到etc下,加入网卡配置

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

2.7、创建keepalived文件夹

mkdir -p /etc/keepalived

2.8、将keepalived配置文件拷贝到etc下

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

2.9、添加可执行权限

chmod +x /etc/init.d/keepalived

 

3. ​​​​​​​加入开机启动:

chkconfig --add keepalived #添加时必须保证/etc/init.d/keepalived存在

chkconfig keepalived on

添加完可查询系统服务是否存在:chkconfig --list

 

4. ​​​​​​​启动keepalived

启动:service keepalived start

停止:service keepalived stop

重启:service keepalived restart

 

5. 配置日志文件

1.将keepalived日志输出到local0:

vi /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

 

2.在/etc/rsyslog.conf里添加:

local0.*  /var/log/keepalived.log

 

3.重新启动keepalived和rsyslog服务:

service rsyslog restart

service keepalived restart

 

4. 打开防火墙的通讯地址

iptables -A INPUT -d 224.0.0.18 -j ACCEPT

/etc/rc.d/init.d/iptables save

猜你喜欢

转载自blog.csdn.net/fjz_lihuapiaoxiang/article/details/85603113