作用:
- 解决大并发情况下,将流量分散到多台后端服务器上,避免某台服务器流量过大,导致服务器崩溃。解决了大并发情况下能正常访问的问题。从而解决web达不到,访问不了的问题
- 提高了网站的性能(并发量)和用户体验。
- 方便网站的性能扩展
- 可以让业务服务器之间可以起到冗余功能--》高可用
TCP(传输控制协议)和 UDP(用户数据报协议)是传输层的两种主要协议,它们在数据包(报文)中有一些共同的特征,尽管整体结构和目的大相径庭。下面列出了一些 TCP 和 UDP 报文共有的元素:
- 源端口号和目的端口号:这两种协议的报文头部都包含了源端口号和目的端口号,用于标识发送和接收数据的应用程序。端口号是一个 16 位的字段。
- 校验和:TCP 和 UDP 的报文头部都包含校验和字段,用于检测传输过程中可能出现的数据损坏。校验和覆盖了头部和数据部分,但 UDP 的校验和是可选的,而 TCP 的校验和是必需的。
然而,需要注意的是,TCP 和 UDP 报文的结构和包含的其他字段有很大的差异:
- TCP 报文头部 包含了序号、确认号、窗口大小、紧急指针、偏移量、标志位(如 SYN、ACK、FIN)等额外的字段,用于实现其面向连接、可靠传输的特性。
- UDP 报文头部 相对简单,除了源端口号、目的端口号和校验和之外,只包含了一个长度字段,用于指定整个用户数据报的长度,包括头部和数据部分。
TCP 和 UDP 的主要区别在于 TCP 提供了可靠的数据传输,包括数据排序、错误检测和重传机制,而 UDP 则提供了更快、更轻量级的传输,适用于对实时性和效率要求较高的应用,如视频会议、在线游戏等,但它不保证数据的可靠传输和顺序到达。
IP地址只找到服务器 端口号可以送到同一台服务器上的不同程序 一个程序默认只占用一个端口号
负载均衡器和所有web机 都要编译安装nginx且确保每个后端web服务器都正常提供web服务 直接克隆web2机器 然后修改ip地址 见cd /etc/sysconfig/network-scripts/
- 配置负载均衡功能
备份原来的配置
[root@lb-1 conf]# cp nginx.conf nginx.conf.back
[root@lb-1 conf]# cp nginx.conf.default nginx.conf
cp:是否覆盖"nginx.conf"? y
cat nginx.conf
worker_processes 2;
events {
worker_connections 2048;
}
http {
#定义一个负载均衡器 名字叫scweb ,会将流量分发到下面的3台服务器里
upstream scweb {
server 192.168.159.136;
server 192.168.159.140;
}
#定义一个虚拟主机,对外提供web服务
server {
listen 80;
#定义一个访问网页根目录,定义一个路由,转发到scweb负载均衡配置上去处理
location / {
proxy_pass http://scweb;
}
}
nginx -t nginx -s reload 检查语句错误 并重新启动
负载均衡调度算法
- 轮询 round-robin 简称rr 公平
- 加权轮询 ,weight值越高,获得流量就会越多,默认 weight值为1
- 最小连接数 least-connected
- ip_hash a hash-function is used to determine what server should be selected for the next request (based on the client’s IP address) 基于客户机的源ip地址来进行hash算法得到一个hash值(摘要值),你曾经访问过某个server,下次还是去访问这个server,不会调度到其他的server上。适合session信息保存在服务器的场景(客户机ip地址没有变化) 适合网站是需要保存用户信息,用户的信息如果是存放在服务器端里的session里,避免用户切换到其他的服务器的时候,没有它的session,session里会保存用户的登录信息,购物车等临时数据。