nginx、 LVS

2019-02-20  本文已影响0人  haoxi2018

(第十五周作业)
1、LVS实现nat,dr。

(1) LVS实现nat

准备三台虚拟机ABC

A:

# yum install ipvsadm -y

B:

# yum install httpd -y

# service httpd restart

# echo "this is rs1"> /var/www/html/index.html

C:

# yum install httpd -y

# service httpd restart

# echo "this is rs2"> /var/www/html/index.html

A机做为LVS调度器,双网卡,第一张网卡为仅主机模式,配置DIP:192.168.159.130,第二张网卡为桥接模式,配置VIP:192.168.1.6

B机做RS1,单网卡,网卡为仅主机模式,配置RIP:192.168.159.129 网关为:92.168.159.130

C机做RS2,单网卡,网卡为仅主机模式,配置RIP:192.168.159.131 网关为:92.168.159.130

在ABC三台机器上关闭防火墙和selinux

关闭防火墙:service firewalld stop 关闭selinux: setenforce 0

在ABC三台机器上进行保持时间一致

# ntpdate -uasia.pool.ntp.org

在A机上打开ipforward功能

#echo 1 >/proc/sys/net/ipv4/ip_forward

在A机创建LVS

#ipvsadm -A -t 192.168.1.6:80 -s rr

#ipvsadm -a -t 192.168.1.6:80 -r 192.168.159.129 -m

#ipvsadm -a -t 192.168.1.6:80 -r 192.168.159.131 -m

由于在windows中的浏览器中一般都会有缓存,其调度可能会失效,使用Linux中的curl等命令访问则是没有问题的。能够正常的实现调度。

可以通过再创建一台虚拟机,单网卡,网卡为桥接模式。启动后执行(多次执行)

#curlhttp://192.168.1.6

可以看到显示内容有时显示rs1,有时显示rs2,次数基本一样。使用以下命令查看调度的均衡性情况。

#ipvsadm -L -n --rate

(2) LVS实现dr

准备三台虚拟机ABC

A:

# yum install ipvsadm -y

B:

# yum install httpd -y

# service httpd restart

# echo "this is rs1"> /var/www/html/index.html

C:

# yum install httpd -y

# service httpd restart

# echo "this is rs2"> /var/www/html/index.html

A机做为LVS调度器 ip为:192.168.100.1

B机做RS1 ip为192.168.100.10

C机做RS2 ip为192.168.100.11

在ABC三台机器上关闭防火墙和selinux

关闭防火墙:service firewalld stop 关闭selinux: setenforce 0

在ABC三台机器上进行保持时间一致

# ntpdate -uasia.pool.ntp.org

在B机和C机上执行:

# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0  

IPADDR=192.168.100.100

NETMASK=255.255.255.255

BROADCAST=192.168.100.100

ONBOOT=yes

NAME=loopback

# ifdown lo:0

# ifup lo:0

# route add -host 192.168.100.100 dev lo:0

在A机上执行:

# vim /etc/sysconfig/network-scripts/ifcfg-eth1:0

DEVICE=eth1:0   

IPADDR=192.168.100.100  

NETMASK=255.255.255.255  

BROADCAST=192.168.100.100  

ONBOOT=yes

# ifdown eth1:0  

# ifup eth1:0

# route add -host 192.168.100.100 dev eth1:0

在A机上打开ipforward功能

#echo 1 >/proc/sys/net/ipv4/ip_forward

# ipvsadm -A -t 192.168.100.100:80 -s wlc

# ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.10 -g -w 2

# ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.11 -g -w 1

再创建一台虚拟机,启动后执行(多次执行)

#curlhttp://192.168.100.100

可以看到显示内容有时显示rs1,有时显示rs2,

2、nginx反向代理,虚拟主机。

(1)基本IP的虚拟主机

创建一个centos7.2虚拟机,固定IP,设置三个IP:192.168.184.136,    192.168.184.160,    192.168.184.161

#cd /etc/sysconfig/network-scripts/

#cp ifcfg-eno16777736 ifcfg-eno16777736.bak

#vi ifcfg-eno16777736

注释掉

#BOOTPROTO=dhcp

尾部增加

#static

#表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理

NM_CONTROLLED=no

BOOTPROTO=static

IPADDR=192.168.184.136

IPADDR1=192.168.184.160

IPADDR2=192.168.184.161

NETMASK=255.255.255.0

GATEWAY=192.168.184.2

#vi  /etc/sysconfig/network

# Created by anaconda

NETWORKING=yes

GATEWAY=192.168.184.2

DNS1=119.29.29.29

DNS2=182.254.116.116

#service network restart

#ip a查看IP配置情况

安装nginx

# yum install pcre-devel openssl-devel zlib-devel -y

#tar -xf nginx-1.14.2.tar.gz

#cd nginx-1.14.2

#./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio

#make &&   make install

准备web网页

#cd /usr/local/nginx

#cp -r html html-136

#cp -r html html-160

#cp -r html html-161

编辑在以下网页内容中添加IP地址已示区别

#vi html-136/index.html

#vi html-160/index.html

#vi html-161/index.html

#cd /etc/nginx/

#cp nginx.conf nginx.conf.bak

#vi nginx.conf

server {

        listen       80;

        server_name  192.168.184.136;

        location / {

            root   html-136;

            index  index.html index.htm;

        }

}

server{

        listen  80;

        server_name  192.168.184.160;

        location / {

                root html-160;

                index index.html index.htm;

        }

}

server{

        listen 80;

        server_name 192.168.184.161;

        location / {

                root html-161;

                index index.html index.htm;

        }

}

启动nginx

#cd /usr/local/nginx/sbin

#./nginx

在宿主机的浏览器查看以下三个网页,发现内容是不同的(因为我们前面编辑过使用三个目录下的index.html不一样)

http://192.168.184.136/

http://192.168.184.160/

http://192.168.184.161/

(2)基本端口的虚拟主机

基于端口的虚拟主机和基于ip的虚拟主机配置几乎一样,只是在修改Nginx配置文件时,只修改监听的端口和root对应的目录,其他的没有变

在前面的操作的基础上修改配置文件。

#vi /etc/nginx/nginx.conf

server {

        listen       80;

        server_name  192.168.184.136;

        location / {

            root   html-136;

            index  index.html index.htm;

        }

}

server{

        listen  81;

        server_name  192.168.184.136;

        location / {

                root html-160;

                index index.html index.htm;

        }

}

server{

        listen 82;

        server_name 192.168.184.136;

        location / {

                root html-161;

                index index.html index.htm;

        }

}

重新加载nginx配置文件

#cd /usr/local/nginx/sbin

#./nginx -s reload

查看监听端口

#ss -lnt

在宿主机的浏览器查看以下三个网页,发现内容是不同的(因为我们前面编辑过使用三个目录下的index.html不一样)

http://192.168.184.136:80/

http://192.168.184.136:81/

http://192.168.184.136:82/

(3)基本域名的虚拟主机

#vi /etc/nginx/nginx.conf

server {

        listen       80;

        server_name  www.a.com;

        location / {

            root   html-136;

            index  index.html index.htm;

        }

}

server{

        listen  80

        server_name  www.b.com

        location / {

                root html-160;

                index index.html index.htm;

        }

}

server{

        listen 80

        server_namewww.c.com;

        location / {

                root html-161;

                index index.html index.htm;

        }

}

重新加载nginx配置文件

#cd /usr/local/nginx/sbin

#./nginx -s reload

修改宿主机的hosts文件:

C:\Windows\System32\drivers\etc\hosts

添加以下三行内容

192.168.184.136    www.a.com

192.168.184.136    www.b.com

192.168.184.136    www.c.com

在宿主机的浏览器查看以下三个网页,发现内容是不同的(因为我们前面编辑过使用三个目录下的index.html不一样)

http://www.a.com

http://www.b.com

http://www.c.com

(4)nginx 反向代理

安装jdk

上传jdk-8u151-linux-x64.rpm

#rpm -ivh jdk-8u151-linux-x64.rpm

配置环境变量

vi  ~/.bash_profile

尾部增加以下两行内容

export JAVA_HOME=/usr/java/jdk1.8.0_151/

export PATH=$JAVA_HOME/bin:$PATH

运行一下环境变量配置文件

. .bash_profile

上传apache-tomcat-7.0.75.tar.gz

tar -zxf apache-tomcat-7.0.75.tar.gz

mv apache-tomcat-7.0.75 tomcat1

cp -r tomcat1 tomcat2

编辑在以下网页内容中使其看起来有区别

vi tomcat1/webapps/ROOT/index.jsp

vi tomcat2/webapps/ROOT/index.jsp

tomcat1的端口不需要修改,但是tomcat2的端口需要修改

vi tomcat2/conf/server.xml

找到以下三行内容并修改(注意别改到注释内容里面去,而把有效的内容漏掉修改)

<Server port="8006" shutdown="SHUTDOWN">

<Connector port="8081" protocol="HTTP/1.1"....>

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

启动两个tomcat

tomcat1/bin/startup.sh

tomcat2/bin/startup.sh

查看网页是否显示正常

http://192.168.184.136:8080

http://192.168.184.136:8081

准备好两个tomcat环境后,编辑nginx配置文件

vi /etc/nginx/nginx.conf

http {

....

    upstream tomcat1{

        server 192.168.184.136:8080;

    }

    upstream tomcat2{

        server 192.168.184.136:8081;

    }

    server {

        listen       80;

        server_name  192.168.184.136;

        location / {

proxy_passhttp://tomcat1;

            index  index.html index.htm;

        }

    }

    server {

        listen       80;

        server_name  192.168.184.160;

        location / {

proxy_passhttp://tomcat2;

            index  index.html index.htm;

        }

    }

}

重新加载nginx配置文件

#cd /usr/local/nginx/sbin

#./nginx -s reload

在宿主机的浏览器查看以下两个网页,发现内容是不同的(因为我们前面编辑过两个tomcat中的index.jsp)

http://192.168.184.136/

http://192.168.184.160/

上一篇下一篇

猜你喜欢

热点阅读