一、搭建测试环境
这里的测试环境为通过virtualbox安装的两台lubuntu19.04虚拟机,linux系统安装方法不作赘述。
为了保证两台linux虚拟机之间的相互访问,虚拟机的网络配置除了默认的nat方式外,还使用了virtualbox软件提供的内部网络(internal)联网方式。
此外,还需要将两台虚拟机中与“内部网络”相关联的网卡,绑定上同一网段的静态ip地址,则两台主机形成局域网络,相互之间可以直接访问。
网络配置
打开virtualbox软件,分别进入两台虚拟机的设置界面,为其添加连接方式为内部网络的网络连接,截图如下(两台虚拟机作同样的配置):
内部网络
登录进虚拟机系统,使用ipaddr命令查看当前的网络连接信息:
2:enp0s3:<broadcast,multicast,up,lower_up>mtu1500qdiscfq_codelstateupgroupdefaultqlen1000
link/ether08:00:27:38:65:a8brdff:ff:ff:ff:ff:ff
inet10.0.2.15/24brd10.0.2.255scopeglobaldynamicnoprefixrouteenp0s3
valid_lft86390secpreferred_lft86390sec
inet6fe80::9a49:54d3:2ea6:1b50/64scopelinknoprefixroute
valid_lftforeverpreferred_lftforever
3:enp0s8:<broadcast,multicast,up,lower_up>mtu1500qdiscfq_codelstateupgroupdefaultqlen1000
link/ether08:00:27:0d:0b:debrdff:ff:ff:ff:ff:ff
inet6fe80::2329:85bd:937e:c484/64scopelinknoprefixroute
valid_lftforeverpreferred_lftforever
可以看到,此时的enp0s8网卡还没有绑定ipv4地址,需要为其手动指定静态ip。
需要注意的是,从ubuntu17.10版本开始,一个新的名为netplan的工具被引入,原来的网络配置文件不再生效。
所以为网卡设置静态ip时需要修改/etc/netplan/01-network-manager-all.yaml配置文件,示例如下:
addresses:[192.168.1.101/24]
#addresses:[192.168.1.101,8.8.8.8]
由于两台主机处于同一子网,网关和dns服务器未配置的情况下仍可以互相访问。对应的配置项暂时先注释掉(后续可以尝试自行搭建dns服务器)。
编辑完成后运行命令,前面配置的静态ip即可生效。
3:enp0s8:<broadcast,multicast,up,lower_up>mtu1500qdiscfq_codelstateupgroupdefaultqlen1000
link/ether08:00:27:0d:0b:debrdff:ff:ff:ff:ff:ff
inet192.168.1.101/24brd192.168.1.255scopeglobalnoprefixrouteenp0s8
valid_lftforeverpreferred_lftforever
inet6fe80::a00:27ff:fe0d:bde/64scopelink
valid_lftforeverpreferred_lftforever
登录进另一台虚拟机中,执行同样的操作(注意配置文件中的addresses项改为[192.168.1.102/24])。两台虚拟机的网络即配置完成。
此时有linux虚拟机server1,ip地址为192.168.1.101;linux虚拟机server2,ip地址为192.168.1.102。两台主机可相互访问。测试如下:
starky@server1:~$ping192.168.1.102-c2
ping192.168.1.102(192.168.1.102)56(84)bytesofdata.
64bytesfrom192.168.1.102:icmp_seq=1ttl=64time=0.951ms
64bytesfrom192.168.1.102:icmp_seq=2ttl=64time=0.330ms
---192.168.1.102pingstatistics---
2packetstransmitted,2received,0%packetloss,time2ms
rttmin/avg/max/mdev=0.330/0.640/0.951/0.311ms
skitar@server2:~$ping192.168.1.101-c2
ping192.168.1.101(192.168.1.101)56(84)bytesofdata.
64bytesfrom192.168.1.101:icmp_seq=1ttl=64time=0.223ms
64bytesfrom192.168.1.101:icmp_seq=2ttl=64time=0.249ms
---192.168.1.101pingstatistics---
2packetstransmitted,2received,0%packetloss,time29ms
rttmin/avg/max/mdev=0.223/0.236/0.249/0.013ms
二、安装nginx服务器
nginx的安装方式主要有两种:
预编译的二进制程序。这是最简单和最快速的安装方式,各主流操作系统都可以通过包管理器(如ubuntu的apt-get)安装。此种方式会安装几乎所有的官方模块或插件。
从源代码编译安装。这种方式相对于前者更加灵活,可以自行选择需要安装的模块或第三方插件。
本示例并没有特殊的需求,所以直接选择第一种安装方式。命令如下:
$sudoapt-getinstallnginx
安装成功后,通过命令查看nginx服务的运行状态:
●nginx.service-ahighperformancewebserverandareverseproxyserver
loaded:loaded(/lib/systemd/system/nginx.service;enabled;vendorpreset:en
active:active(running)sincetue2019-07-0201:22:07cst;26sago
cgroup:/system.slice/nginx.service
├─3748nginx:masterprocess/usr/sbin/nginx-gdaemonon;master_pro
└─3749nginx:workerprocess
通过命令验证web服务器是否可以正常访问:
server:nginx/1.15.9(ubuntu)
...
三、负载均衡配置
负载均衡(load-balancing)即按照一定的规则将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度。
如某网站应用部署在多台主机构成的服务器集群上,负载均衡服务器位于终端用户和服务器集群之间,负责接收终端用户的访问流量,并根据一定的规则将用户访问分发给后端的服务器主机,从而提高在高并发状态下的响应速度。
负载均衡服务器
nginx可以通过upstream选项配置负载均衡。这里使用虚拟机server1作为负载均衡服务器。
修改serve1上默认站点的配置文件(sudovim/etc/nginx/sites-available/default),改为如下内容:
server192.168.1.102:8000;

}
基于测试的目的,当前只有两台虚拟机。server1(192.168.1.101)已经作为负载均衡服务器,所以使用server2(192.168.1.102)作为应用服务器。
这里借助nginx的虚拟主机功能,分别将192.168.1.102和192.168.1.102:8000“模拟”为两台不同的应用服务器。
应用服务器
修改server2上默认站点的配置文件(sudovim/etc/nginx/sites-available/default),改为如下内容:
indexindex.htmlindex.htmindex.nginx-debian.html;
server_name192.168.1.102;
}
在/var/www/html目录下创建index.html文件,作为default站点的index页面,内容如下:
<title>indexpagefromserver1</title>
<h1>thisisserver1,address192.168.1.102.</h1>
</html>
运行命令重启nginx服务,此时访问即可获取刚刚创建的index.html页面:
<title>indexpagefromserver1</title>
<h1>thisisserver1,address192.168.1.102.</h1>
</html>
配置“另一台主机”上的站点,在server2上创建配置文件,内容如下:
indexindex2.htmlindex.htmindex.nginx-debian.html;
server_name192.168.1.102;
}
注意监听端口和index页面的配置变化。在/var/www/html目录下创建index2.html文件,作为server2站点的index页面,内容如下:
<title>indexpagefromserver2</title>
<h1>thisisserver2,address192.168.1.102:8000.</h1>
</html>
ps:为了测试目的,default站点和server2站点配置在同一个主机server2上,且页面稍有不同。实际环境中通常将这两个站点配置在不同的主机上,且内容一致。
运行命令启用刚刚创建的server2站点。
重启nginx服务,此时访问即可获取刚刚创建的index2.html页面:
<title>indexpagefromserver2</title>
<h1>thisisserver2,address192.168.1.102:8000.</h1>
</html>
可以修改server1上的/etc/hosts文件,添加如下一条记录:
即可将该域名解析到本地ip,完成对负载均衡服务器的访问。
重启nginx服务,在server1上访问,效果如下:
<title>indexpagefromserver1</title>
<h1>thisisserver1,address192.168.1.102.</h1>
<title>indexpagefromserver2</title>
<h1>thisisserver2,address192.168.1.102:8000.</h1>
<title>indexpagefromserver1</title>
<h1>thisisserver1,address192.168.1.102.</h1>
<title>indexpagefromserver2</title>
<h1>thisisserver2,address192.168.1.102:8000.</h1>
</html>
从输出中可以看出,server1对负载均衡服务器的访问,完成了对应用服务器server2上两个web站点的轮询,起到负载均衡的作用。
四、负载均衡方法
nginx开源版本提供四种负载均衡的实现方式,简单介绍如下。
1.roundrobin
用户请求均匀地分配给后端服务器集群(可以通过weight选项设置轮询的权重),这是nginx默认使用的负载均衡方式:
serverbackend1.example.comweight=5;
serverbackend2.example.com;
}
2.leastconnections
用户请求会优先转发给集群中当前活跃连接数最少的服务器。同样支持weight选项。
serverbackend1.example.com;
serverbackend2.example.com;
}
3.iphash
用户请求会根据客户端ip地址进行转发。即该方式意图保证某个特定的客户端最终会访问同一个服务器主机。
serverbackend1.example.com;
serverbackend2.example.com;
}
4.generichash
用户请求会根据一个自定义键值确定最终转发的目的地,该键值可以是字符串、变量或者组合(如源ip和端口号)。
hash$request_uriconsistent;
serverbackend1.example.com;
serverbackend2.example.com;
}
权重
serverbackend1.example.comweight=5;
serverbackend2.example.com;
}
默认权重(weight)为1。backup服务器只有在所有其他服务器全部宕机的情况下才会接收请求。
如上面的示例,每6个请求会有5个转发给,1个转发给backend2.example.com。只有当backend1和backend2全部宕机时,192.0.0.1才会接收并处理请求。
以上就是Linux下nginx服务器安装及负载均衡怎么配置的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--linuxnginx安装配置
本文地址:https://www.idcbaba.com/guowai/3064.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



