nginx、 LVS

(第十五周作业)
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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352