高可用Lvs集群搭建和测试报告

合集下载

LVS keepalived负载均衡高可用 配置安装大全

LVS keepalived负载均衡高可用 配置安装大全

LVS+Keepalived实现高可用集群一、基础介绍 (2)二、搭建配置LVS-NA T模式 (2)三、搭建配置LVS-DR模式 (4)四、另外一种脚本方式实现上面LVS-DR模式 (6)五、keepalived + LVS(DR模式) 高可用 (8)六、Keepalived 配置文件详细介绍 (11)一、基础介绍(一)根据业务目标分成三类:High Availability 高可用Load Balancing 负载均衡High Performance 高性能(二)实现集群产品:HA类:rhcs、heartbeat、keepalivedLB类:haproxy、lvs、nginx、f5、piranhaHPC类:/index/downfile/infor_id/42(三)LVS 负载均衡有三种模式:LVS-DR模式(direct router)直接路由模式进必须经过分发器,出就直接出LVS-NAT模式(network address translation)进出必须都经过分发器LVS-TUN模式(ip tunneling)IP隧道模式服务器可以放到全国各地二、搭建配置LVS-NAT模式1 、服务器IP规划:DR服务器添加一张网卡eth1,一个网卡做DIP,一个网口做VIP。

设置DIP、VIP IP地址:DIP的eth1和所有RIP相连同一个网段CIP和DIP的eth0(Vip)相连同一个网段Vip eth0 192.168.50.200Dip eth1 192.168.58.4客户机IP:Cip 192.168.50.32台真实服务器IP:Rip1 192.168.58.2Rip2 192.168.58.32 、R ealServer1配置:mount /dev/xvdd /media/vi /var/www/html/index.html写入:this is realserver1启动httpdvi /etc/sysconfig/network-scripts/ifcfg-eth0设置RIP,子网掩码必须设置成DIPIPADDR=192.168.58.2NETMASK=255.255.255.0GA TEWAY=192.168.58.43 、R ealServer2 配置:vi /var/www/html/index.html写入:this is realserver2启动httpdvi /etc/sysconfig/network-scripts/ifcfg-eth0设置RIP,子网掩码必须设置成DIPIPADDR=192.168.58.3NETMASK=255.255.255.0GA TEWAY=192.168.58.44 、在DR服务器上做以下设置:开启IP数据包转发vi /etc/sysctl.confnet.ipv4.ip_forward = 0 ##0改成1 ,此步很重要查看是否开启:sysctl -p5 、安装LVS服务:ipvsadmyum -y install ipvsadmlsmod |grep ip_vsTurbolinux系统没有带rpm包,必须下载源码安装:#ln -s /usr/src/kernels/2.6.18-164.el5-x86_64/ /usr/src/linux##如果不做连接,编译时会包错#tar zxvf ipvsadm-1.24.tar.gz#cd ipvsadm-1.24#make && make install运行下ipvsadm ,就加到ip_vs模块到内核了lsmod | grep ip 可以看到有ip_vs模块了6 、配置DR服务器,添加虚拟服务ipvsadm -L -n 查询信息ipvsadm -A -t 192.168.50.200:80 -s rr #添加集群服务、调度算法,rr为调度算法ipvsadm -a -t 192.168.50.200:80 -r 192.168.58.2 -m -w 1 # -m代表net模式,-w代表权重ipvsadm -a -t 192.168.50.200:80 -r 192.168.58.3 -m -w 2ipvsadm -L -n 再次查看是就有了realserverservice ipvsadm save 保存配置iptables -L 关闭或者清空防火墙watch -n 1 'ipvsadm -L -n' 查看访问记录的数显示如下:-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.50.200:80 rr-> 192.168.58.2:80 Masq 1 0 13-> 192.168.58.3:80 Masq 2 0 12ActiveConn是活动连接数,也就是tcp连接状态的ESTABLISHED;InActConn是指除了ESTABLISHED以外的,所有的其它状态的tcp连接.7 、测试:http://192.168.58.200配完后若想修改算法:ipvsadm -E -t 192.168.58.200:80 -s wlc修改Rip的权重:ipvsadm -e -t 192.168.58.200:80 -r 192.168.58.2 -m -w 1ipvsadm -e -t 192.168.58.200:80 -r 192.168.58.3 -m -w 5三、搭建配置LVS-DR模式lo:1 回应客户端,lo:1上的IP跟机器有关,跟网卡没有关系arp_announce 对网络接口上本地IP地址发出的ARP回应作出相应级别的限制arp_ignore 定义对目标地址为本地IP的ARP询问不同的请求一、3台服务器IP配置规划:DIP:eth0:1 192.168.58.200/32 (VIP)eth0 192.168.58.3/24 (DIP)RIP1 lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.4/24RIP2 lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.5/24 .................................................................RIP n lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.N/24二、每台realserver都加上下面四个步骤配置:1 、配置每台rip的IP、http,web页面2 、关闭每台rip服务器的ARP广播:echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce3 、配置VIPifconfig lo:1 192.168.58.200 netmask 255.255.255.255 broadcast 192.168.58.200 up4 、配置网关route add -host 192.168.58.200 dev lo:1三、DR上的配置(DR模式下Dip不用开启转发):1 、配置DIP,在eth0上添加一个子VIP接口:添加VIP:ifconfig eth0:1 192.168.58.200 broadcast 192.168.58.200 netmask 255.255.255.255 up2 、配置网关:route add -host 192.168.58.200 dev eth0:1route -n3 、安装ipvsadm(方法见文档上面)yum -y install ipvsadmlsmod |grep ip_vs4 、配置LVS集群:ipvsadm -A -t 192.168.58.200:80 -s rr #添加集群服务、调度算法,rr为调度算法ipvsadm -a -t 192.168.58.200:80 -r 192.168.58.3 -g -w 1 # -g代表DR模式,-w代表权重ipvsadm -a -t 192.168.58.200:80 -r 192.168.58.2 -g -w 2service ipvsadm saveipvsadm -L -n 查看信息四、测试:http://192.168.58.200四、另外一种脚本方式实现上面LVS-DR模式IP规划:Dip eth0 192.168.58.139VIP:192.168.58.200RIP1:192.168.58.2RIP2:192.168.58.31 、D R服务器上安装ipvsadm#yum -y install ipvsadm#lsmod | grep ip_vs 查看没有输出#modprobe ip_vs 安装即可2 、配置DIP服务器、LVS这里也是个写脚本为了方便vim /etc/init.d/lvsdr#!/bin/bash#lvs of DRVIP=192.168.58.200RIP1=192.168.58.2RIP2=192.168.58.3case "$1" instart)echo "start lvs of DR"/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.0 up echo "1" > /proc/sys/net/ipv4/ip_forward/sbin/iptables -C/sbin/ipvsadm -A -t $VIP:80 -s rr/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g/sbin/ipvsadm;;stop)echo "stop lvs of DR"echo "0" > /proc/sys/net/ipv4/ip_forward/sbin/ipvsadm -C/sbin/ifconfig eth0:0 down;;*)echo "Usage :$0 {start|stop}"exit1esacexit 0#chmod o+x /etc/init.d/lvsdr启动脚本:#service lvsdr start3 、2台RIP服务器都配置这里我们也都可以写成脚本开启2台RIP的httpd服务。

LVS+NGINX+TOMCAT 集群实施操作记录

LVS+NGINX+TOMCAT 集群实施操作记录

IP:Eth0:192.168.100.115Eth1:192.168.100.215Vi /etc/init.d./lvs#!/bin/sh## lvs Start lvs## chkconfig: 2345 08 92# description: Starts, stops and saves lvs#SNS_VIP=192.168.100.215SNS_RIP1=192.168.100.114SNS_RIP2=192.168.100.113. /etc/rc.d/init.d/functions#logger $0 called with $1retval=0start(){#set squid vip/sbin/ipvsadm --set 30 5 60#/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up#/sbin/route add -host $SNS_VIP dev eth0:0/sbin/ipvsadm -A -t $SNS_VIP:80 -s rr/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1 -g/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2 -gtouch /var/lock/subsys/ipvsadm > /dev/null 2 >&1echo "ipvsadm started"}stop(){/sbin/ipvsadm -C/sbin/ipvsadm -Z#ifconfig eth0:0 down#route del $SNS_VIPrm -rf /var/lock/subsys/ipvsadm > /dev/null 2 >&1echo "ipvsadm stoped"}status(){if [ ! -e /var/lock/subsys/ipvsadm ];thenecho "ipvsadm stoped"exit 1elseecho "ipvsadm OK"fi}case "$1" instart)start;;stop)stop;;status)status;;restart)stopstart;;*)echo $"Usage: $0 {start|stop|status}"retval=1esacexit $retvalkeepalvivedtar xf keepalived-1.2.7.tar.gzcd keepalived-1.2.7./configure --prefix=/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-279.el6.x86_64Makemake installcd /etc/keepalived/mv keepalived.conf keepalived.conf.default chkconfig --add keepalivedchkconfig keepalived onvim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from root@localhost smtp_server 127.0.0.1smtp_connect_timeout 30router_id Director1}#VRRP(虚拟路由冗余协议)实例配置vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.122.254/24 eth1}}#LVS配置virtual_server 192.168.100.215 80 {delay_loop 3lb_algo rrlb_kind DRnat_mask 255.255.255.0# persistence_timeout 50protocol TCPreal_server 192.168.100.113 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 10nb_get_retry 3delay_before_retry 3}}real_server 192.168.100.114 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 10nb_get_retry 3delay_before_retry 3}}}}LVS-realserverIp 192.168.100.113Ip 192.168.100.114Vi /etc/init.d/rsup#!/bin/bashVIP=192.168.100.215ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up #route add –host $VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce#sysctl –pIp 192.168.100.122(nfs)Ip 192.168.100.113Ip 192.168.100.114#安装zlibtar xzvf zlib-1.2.3.tar.gzcd zlib-1.2.3./configuremake && make install#安装pcretar zxvf pcre-7.9.tar.gzcd pcre-7.9./configure --prefix=/usr/local/pcremake && make installwget /download/nginx_mod_h264_streaming-2.2.7.tar.gztar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gzunzip nginx_upstream_check_module-master.zipmv ./nginx_upstream_check_module-master /root/healthtar -xvf nginx-1.4.1.tar.gz -C /usr/src/useradd nginxcd /usr/src/nginx-1.4.1patch -p1 < /root/health/check_1.2.6+.patch./configure --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_flv_module --add-module=../nginx_mod_h264_streaming-2.2.7 --with-pcre=/softw are/pcre-7.9 --with-zlib=/software/zlib-1.2.3 --prefix=/usr/local/nginx --add-module=/root/healthmake && make install/usr/local/nginx/sbin/nginx开机自动启动vi /etc/init.d/nginx#!/bin/bash## nginx - this script starts and stops the nginx daemin# chkconfig: - 85 15# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server# processname: nginx# config: /usr/local/nginx/conf/nginx.conf# pidfile: /usr/local/nginx/logs/nginx.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0nginx="/usr/local/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"lockfile=/var/lock/subsys/nginxstart() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6echo -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval}stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval}restart() {configtest || return $?stopstart}reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?echo}force_reload() {restart}configtest() {$nginx -t -c $NGINX_CONF_FILE }rh_status() {status $prog}rh_status_q() {rh_status >/dev/null 2>&1 }case "$1" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2esac############################################################################## 改权限chmod 755 /etc/init.d/nginxchkconfig nginx onchkconfig --list nginxnginx 0:off 1:off 2:on 3:on 4:on 5:on 6:offservice nginx startservice nginx stopservice nginx restartservice nginx reload/etc/init.d/nginx start/etc/init.d/nginx stop/etc/init.d/nginx restart/etc/init.d/nginx reloadNginx 配置文件vi /usr/local/nginx/conf/nginx.conf#user nginx nginx;worker_processes 12;error_log /usr/local/nginx/logs/error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 65535;events{use epoll;worker_connections 204800;}http{include mime.types;default_type application/octet-stream;charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 2k;large_client_header_buffers 4 4k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;fastcgi_cache_path /usr/local/nginx/fastcgi_temp levels=1:2keys_zone=TEST:10minactive=5m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 1638;fastcgi_buffers 16 16k;fastcgi_busy_buffers_size 16k;fastcgi_temp_file_write_size 16k;fastcgi_cache TEST;fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500;open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;open_file_cache_valid 30s;tcp_nodelay on;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on;upstream nginx_server {ip_hash;server 192.168.100.122:80;}upstream web_server {ip_hash;server 192.168.100.131:9001;server 192.168.100.132:9001;server 192.168.100.133:9001;server 192.168.100.134:9001;check interval=3000 rise=2 fall=5 timeout=1000;}upstream napi_server {ip_hash;server 192.168.100.131:9002;server 192.168.100.132:9002;server 192.168.100.133:9002;server 192.168.100.134:9002;server 192.168.100.131:9003;server 192.168.100.132:9003;server 192.168.100.133:9003;server 192.168.100.134:9003;server 192.168.100.131:9004;server 192.168.100.132:9004;server 192.168.100.133:9004;server 192.168.100.134:9004;check interval=3000 rise=2 fall=5 timeout=1000;}upstream oapi_server {ip_hash;server 192.168.100.131:9005;server 192.168.100.132:9005;server 192.168.100.133:9005;server 192.168.100.134:9005;server 192.168.100.131:9006;server 192.168.100.132:9006;server 192.168.100.133:9006;server 192.168.100.134:9006;check interval=3000 rise=2 fall=5 timeout=1000;}server {listen 80;server_name localhost;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html|mp3|wma|wmv)${root /usr/wodm/;proxy_pass http://nginx_server;}location ~ .*\.(js|css)?${expires 1h;}location /NginxStatus{stub_status on;access_log on;auth_basic "NginxStatus";#auth_basic_user_file conf/htpasswd;}location /nstatus {check_status;access_log off;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';access_log /usr/local/nginx/logs/access.log access;include /usr/local/nginx/conf/vhost/*.conf;}Nginx(nfs)Nginx.conf#user nginx nginx;worker_processes 16;#worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;error_log /usr/local/nginx/logs/error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 204800;events{use epoll;worker_connections 204800;}http{include mime.types;default_type application/octet-stream;charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 2k;large_client_header_buffers 4 4k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2keys_zone=TEST:10minactive=5m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 1638;fastcgi_buffers 16 16k;fastcgi_busy_buffers_size 16k;fastcgi_temp_file_write_size 16k;fastcgi_cache TEST;fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500;open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;open_file_cache_valid 30s;tcp_nodelay on;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on;server{listen 80;server_name localhost;index index.php index.htm;root /usr/wodm/;location /status{stub_status on;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html|mp3|wma|wmv)${expires 30d;}}log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';access_log /usr/local/nginx/logs/access.log access;标准字符集vi /etc/sysconfig/i18nLANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"LANG="zh_CN.GB18030"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"打开文件数vi /etc/security/limits.conf* soft nofile 65535* hard nofile 65535vi /etc/pam.d/loginsession required /lib/security/pam_limits.songinx 日志按天分割vi nginx_log.sh#!/bin/bashlogs_path="/usr/local/nginx/logs/"pid_path="/usr/local/nginx/nginx.pid"mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").logkill -USR1 `cat ${pid_path}`chmod 755 nginx_log.shcrontab –e0 0 * * * bash /usr/local/nginx/nginx_log.shTomcat memcachetar xf libevent-1.4.11-stable.tar.gzcd libevent-1.4.11-stable./configuremakemake installcd ../tar xf memcached-1.4.5.tar.gzcd memcached-1.4.5./configuremakemake install/usr/local/bin/memcached -d -m 10 -u root -l 192.168.1.113 -p 11211 -c 1024 -P /tmp/memcached.pidMemcache+tomcat 共享session后续计划尚未配置。

lvs验证步骤

lvs验证步骤

LVS验证步骤一、概述LVS(Linux Virtual Server)是一种高性能的负载均衡解决方案,用于将网络服务流量分发到多个服务器,以提高整体性能和可用性。

LVS通过运行在服务器和客户端之间的调度器来管理网络连接,并将客户端的请求分发到不同的后端服务器。

要确保LVS正常工作并实现最佳性能,验证步骤至关重要。

本文将介绍LVS验证的基本步骤,以确保您的系统配置正确并正常运行。

二、验证步骤1.确认LVS安装与配置首先,确保您已经正确安装了LVS软件包,并且已经按照您的需求进行了适当的配置。

检查您的配置文件,如/etc/lvs/lvs.conf和/etc/lvs/nat.conf,确保所有的IP地址、端口和其他关键设置都是正确的。

在安装或配置过程中可能出现的任何错误或不一致都会影响LVS的性能和稳定性。

2.检查网络连接性验证所有后端服务器和客户端是否可以相互通信。

可以通过ping命令或使用traceroute命令来测试网络连通性。

如果存在任何通信问题,请检查网络设备(如路由器和交换机)的配置,并确保所有设备都已正确配置并运行正常。

3.检查服务器状态和响应时间使用如curl或wget之类的工具,测试每个后端服务器的响应时间和服务状态。

这将确保服务器可以正常响应请求,并且不会对LVS的性能产生负面影响。

如果发现任何服务器响应缓慢或无法访问,请检查服务器的状态和日志,以确定并解决问题。

4.测试LVS调度算法LVS支持多种调度算法,包括轮询(Round Robin)、加权轮询(Weighted Round Robin)和最小连接数(Least Connections)等。

确保您选择的算法符合您的业务需求,并测试算法的性能。

您可以使用如ipvsadm或lvsadmin之类的工具来查看LVS的当前状态和调度算法的统计数据。

根据需要调整权重或算法设置,以确保最佳性能。

5.测试负载均衡器健康状况负载均衡器是LVS架构中的关键组件,负责接收客户端请求并将其转发到后端服务器。

双机热备实验报告

双机热备实验报告

一、实验目的本次实验旨在通过搭建双机热备系统,实现对关键服务的自动故障切换和高可用性保障。

通过实验,掌握双机热备系统的搭建、配置和测试方法,提高对高可用性解决方案的理解和实际操作能力。

二、实验环境1. 硬件环境:- 服务器A:Intel Xeon CPU E5-2620 v3,16GB内存,1TB硬盘- 服务器B:Intel Xeon CPU E5-2620 v3,16GB内存,1TB硬盘- 网络设备:交换机、路由器等2. 软件环境:- 操作系统:CentOS 7.6- 软件包:LVS、Keepalived、Nginx等三、实验步骤1. 环境准备- 服务器A、B安装CentOS 7.6操作系统,并进行必要的网络配置。

- 在服务器A、B上安装LVS、Keepalived、Nginx等软件包。

2. LVS配置- 在服务器A上配置LVS的Director角色,设置虚拟IP地址(VIP)和端口映射。

- 在服务器B上配置LVS的RealServer角色,设置真实服务器地址和端口。

3. Keepalived配置- 在服务器A、B上分别配置Keepalived,设置VRRP虚拟路由冗余协议。

- 服务器A作为主服务器,拥有VIP地址,负责提供服务。

- 服务器B作为备份服务器,处于监控状态,一旦服务器A故障,自动接管VIP地址。

4. Nginx配置- 在服务器A、B上安装Nginx,并配置相同的虚拟主机。

- 设置Nginx反向代理,将请求转发到后端RealServer。

5. 实验测试- 在服务器A上测试服务,确保Nginx正常运行。

- 通过ping命令测试VIP地址,确认服务器A拥有VIP。

- 模拟服务器A故障,查看服务器B是否自动接管VIP地址。

- 在服务器B上测试服务,确保Nginx正常运行。

四、实验结果与分析1. 实验结果- 成功搭建双机热备系统,实现了对关键服务的自动故障切换和高可用性保障。

- 在服务器A故障的情况下,服务器B自动接管VIP地址,保证服务正常运行。

高可用性测试方案

高可用性测试方案

高可用性测试方案一、引言高可用性是指系统或服务能够在持续运行中保持高水平的稳定性和可靠性。

对于关键的业务系统和服务,高可用性是至关重要的。

在本文档中,我们将介绍一个高可用性测试方案,旨在验证系统的高可用性和稳定性,并帮助发现和解决潜在的故障点。

二、测试目标1. 验证系统或服务在正常运行期间的可靠性和稳定性。

2. 确定系统或服务对故障的反应和恢复能力。

3. 发现系统或服务在正常和异常条件下的性能问题。

4. 评估系统或服务在负载增加时的性能表现和稳定性。

5. 测试系统或服务在硬件故障、网络中断等异常情况下的可用性和恢复能力。

三、测试环境1. 硬件环境:根据系统或服务的要求,搭建适当的硬件环境,包括服务器、网络设备等。

2. 软件环境:安装和配置系统或服务所需的软件,包括操作系统、数据库、中间件等。

3. 测试工具:选择合适的测试工具,用于模拟负载、故障和恢复等场景。

四、测试策略和方法1. 基本测试:在正常的业务条件下,验证系统或服务的稳定性和可靠性。

可以模拟并发用户访问、数据入库和查询等操作,观察系统的响应时间和吞吐量。

2. 故障模拟测试:通过模拟故障场景,验证系统对不同类型故障的处理和恢复能力。

可以模拟硬件故障、网络中断、服务崩溃等场景,并观察系统的自动恢复和错误处理机制。

3. 负载测试:逐渐增加系统的负载,测试系统的性能和稳定性。

可以模拟高并发访问、大规模数据处理等场景,观察系统的响应时间、吞吐量和资源利用率。

4. 容量规划测试:根据系统或服务的性能指标和预期的用户量,评估系统的容量和扩展能力。

可以通过逐步增加用户量和负载,观察系统的性能曲线和扩展极限。

5. 高可用性测试:模拟系统或服务的关键组件故障,测试系统的自动切换和恢复能力。

可以通过模拟服务器故障、数据库故障等场景,观察系统的故障切换时间和数据一致性。

五、测试计划1. 确定测试目标和范围,制定详细的测试计划和测试用例。

2. 配置测试环境,安装和配置所需的软件和工具。

LVS手册(正式版)

LVS手册(正式版)

LVS手册修改历史时间说明修改人2006-11-29 创建文档*****2006-12-6 修改文档********** 2007-1-11 增加受攻击的应对措施*********系统有限公司版权所有不得复制目录第一章IPVS负载均衡技术 (3)1.1LVS集群的通用结构 (3)1.2IP负载均衡技术 (5)1.2.1 通过NAT实现虚拟服务器(VS/NAT) (5)1.2.2 通过直接路由实现虚拟服务器(VS/DR) (6)1.2.3 通过IP隧道实现虚拟服务器(VS/TUN) (9)1.2.4 三种IP负载均衡技术比较 (11)第二章IPVS+HEARTBEAT+MON建立LVS系统 (13)2.1系统搭建流程 (13)2.1.1 Load Balancer的搭建流程 (13)2.1.2 Real Server的搭建流程 (13)2.2内核升级 (13)2.2.1 LD Server的内核编译参数 (13)2.2.2 Real Server的内核编译参数 (16)2.2.3 内核升级步骤 (17)2.3安装IPVSADM及配置IPVS (17)2.3.1 安装ipvsadm(install_ipvs.sh) (17)2.3.2 配置IPVS(config_ipvs.sh) (18)2.4安装MON及配置MON (18)2.4.1 安装mon(install_mon.sh) (18)2.4.2 配置mon(config_mon.sh) (18)2.5安装H EART B EA T及配置H EART B EAT (19)2.5.1 安装HeartBeat(install_HB.sh) (19)2.5.2 配置HeartBeat(config_HB.sh) (19)2.6系统配置信息 (20)2.7自动化安装包使用说明(LVSP AKEAGE.TAR.GZ) (20)2.8R EAL S ERVER的配置 (21)第三章VS/TUN模式压力测试报告 (22)3.1VS/TUN模式压力测试结论 (22)3.2千M网卡,模式VS/TUN(外网VIP,HTTP服务) (22)3.2.1 压力测试条件 (22)3.2.2 LD SERVER的情况 (23)3.2.3 REAL SERVER 172.16.80.49的情况 (23)3.2.4 REAL SERVER 172.16.81.138的情况 (24)3.2.5 REAL SERVER 172.16.13.52的情况 (24)3.2.6.REAL SERVER 172.16.80.50的情况 (25)3.2.6.REAL SERVER 结论 (25)3.3百M网卡,模式VS/TUN(内网VIP,UDP服务) (26)3.3.1 压力测试条件 (26)3.3.2 LD SERVER的情况 (26)3.3.3 REAL SERVER 172.19.58.150的情况 (27)3.3.4 REAL SERVER 172.19.58.151的情况 (27)3.3.5 REAL SERVER 172.19.58.152的情况 (28)3.3.6 REAL SERVER 172.19.58.153的情况 (28)3.3.7 REAL SERVER 172.19.58.154的情况 (29)3.3.8 结论 (29)第四章高级话题 (30)4.1充分利用服务器资源发挥LVS性能 (30)4.1.1 双CPU超线程的至强服务器 (30)4.1.2 双CPU双核心的至强服务器 (30)4.2连接的相关性 (31)4.3本地节点 (33)4.4M ON监测程序 (33)4.5系统可用性分析 (33)4.5RS上运行S QUID (34)4.6系统绑定端口分析 (34)4.7LD的网络拓扑及受攻击时的应对措施 (35)4.7.1 LD的网络拓扑 (35)4.7.2 LD受攻击时的应对措施 (36)附录1 IPVSADM使用指南 (38)1名词解释 (38)2IPVSADM 的用法和格式如下 (38)3命令选项 (38)4Q&A (41)第一章IPVS负载均衡技术1.1 LVS集群的通用结构LVS集群采用IP负载均衡技术,属于IP层的交换(L4), 具有很好的吞吐率。

LVS集群系统及其在网络课程平台中的应用

LVS集群系统及其在网络课程平台中的应用
中实现负 载均衡调度的技术 ,] 可以把集群服务器映射成一个 虚拟服务器. [它 2
2 1 L S集群 中的 I . V P负载均衡 技术
目 L 集群 中的 I 前 VS P负载均衡技术有三种 : 网络地 址转换 的虚拟 主机 ( S 基于 V —NA 、 于 I T)基 P隧道 的虚拟 主机 ( -T N2、 VS U )基于直接路 由的虚拟主机 ( S D ) 由于 N T 方 式下集群 中的真 实服务器 可以采用任何 V - R. A
将集群 系统应 用在 网络 课 程 中的 可行 性 , 利 用 L 并 VS搭 建 了 简 易 的 实 验 环 境 , 用 w e ec 采 bB nh 4 O 对其性 能进行 了测试 .测试 结果表 明 , 于 L .1 基 VS服务 器的集 群 系统应 用在 网络 课 程 平 台上 具
有 良好 的效果. 关 键词 :集群 系统 ; 网络 课程 I iu L n x虚 拟服 务 器 I 态平衡 动
1 集群 ( l t g 技术 Cu i ) sn
集群技术可如下定 义 : 一组相互独立 的服务器在 网络 中表现为单一的系统 , 以单一系统 的模 式加 以管理 , 并 此
单一系统为用户工作站提供高可嚣性的服务 .] [ 1 采用集群技术的 目的是提 高系统性能 , 降低成本 , 提高规模 扩展性 , 强可靠性.常见 的集群 有高性 能科学集 增
维普资讯
第 2 O卷
第 4期
开 封 大 学 学 报
J OURNAL OF KAI FENG UNI VERS TY I
Vo _ O No 4 I2 . De . 0 6 C2 0
200 6年 1 2月
L VS集群 系统及其在 网络课程平 台中的应 用

企业级网络服务平台的搭建

企业级网络服务平台的搭建

宣城职业技术学院毕业设计(论文)企业级网络服务平台的搭建黄亚会班级 09计算机网络技术(2)班专业计算机网络技术教学系信息工程系指导老师刘训星焦小平完成时间2011 年10 月9 日至2011 年11 月20日目录一、前言 (3)(一)选题的背景与意义 (3)(二)国内外的研究现状 (4)二、高可用集群 (5)(一)集群的定义 (5)(二)集群的分类 (5)(三)高可用集群架构 (5)(四)常用架构模型 (7)(五)高可用集群的设计及实现 (7)(六)主服务器的设置 (8)(七)从服务器的设置 (9)(八)测试效果 (10)三、LINUX 虚拟服务器集群 (10)(一)负载均衡架构 (10)(二) LINUX VIRTUAL SERVER (11)(三) LVS-NAT (12)(四) LVS-NAT 集群的设计及实现 (13)(五)LVS-DR 集群架构的设计与实现及测试结果 (14)(六) LVS-TUN (17)(七) LVS 持久性 (18)四、LVS+HEARTBEAT 构建高并发、高可用集群 (22)(一) LVS + HEARTBEAT 三层架构的设计 (22)(二) LVS + HEARTBEAT 三层架构的实现 (23)(三)Primary/Standby 实现高可用 (24)(四)结果验证 (27)【结束语】 (28)【参考文献】 (29)企业级网络服务平台的搭建——宣城职业技术学院09网络(2)班设计方案【摘要】当今计算机技术已经进入以网络为中心的时代。

互联网的高速发展,用户数量及网络流量的迅速增长使得越来越多服务器显得负担沉重,对网络服务器的可扩展性和可用性提出了更高的要求。

简单的提高硬件性能并不能真正解决这个问题。

为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。

集群技术就是将多台计算机组织起来进行协同工作来模拟一台功能更强大的服务器的技术。

本文首先对现有服务器集群系统的技术进行了分析,介绍了几个典型的集群系统,重点讨论了负载均衡集群(LVS)和高可用集群(HA)的工作原理和实现技术。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高可用Lvs集群搭建和测试报告
Lvs(Linux Virtual Server)是Linux下的负载均衡器,支持LVS-NA T、 LVS-DR、LVS-TUNL三种不同的方式,NA T用的不是很多,主要用的是DR、TUNL方式。

DR方式适合所有的RealServer在同一网段下,即接在同一个交换机上。

TUNL方式不限制RealServer 的位置,完全可以跨地域、空间,只要系统支持Tunnel就可以。

运行Lvs的前端调度器,目前只能为Linux,针对FreeBSD刚刚出来,性能不是很好。

可以针对Web、MySQL、Ftp等服务做load balances。

后端的RealServer则可以为各类系统,Linux、Solaris、Aix、BSD、Windows都可。

下面主要针对DR方式下的Web、MySQL负载均衡,以及Lvs + HA做功能性的验证和性能方面的测试。

1.集群系统拓扑
2.环境搭建说明
1.前端Load Balancer、Backup为虚拟机Linux系统,后端两台Real Server为纯Linux系
统。

2.192.168.6.229为前端负载均衡调度器,虚拟IP为192.168.6.111,安装并配置了ipvsadm
(负载均衡)、ldirectord(健康监控)服务。

3.192.168.6.230为调度器的备份,采用heartbeat实现。

4.192.168.6.240、192.168.6.241为两台提供服务的真实Server。

3.功能性验证
首先在Load Balancer上安装ipvsadm、ldirectord、heartbeat服务,备机上也相同,可以用YUM进行安装,安装完成后需要将ha.cf、haresources、authkeys、ldirectord.cf文件拷贝到/etc/ha.d/ 目录下。

3.1. 验证Apache负载均衡。

3.1.1.配置
1.配置Load Balancer的ipvsadm,脚本内容如下:
2.配置Load Balancer的ldirectord,配置文件(/etc/ha.d/ldirectord.cf)主要内容如下:
并且分别在Real Server上创建index.html脚本,输出内容为Test Page。

3.配置Real Server,脚本内容如下:
注:所有的Real Server配置一样。

3.1.2.测试步骤
1.在两台Real Server上分别创建index.php脚本,一个输出Real Server One,另外一个输
出Real Server Two。

2.分别运行Load Balancer和Real Server上的配置脚本。

3.在客户端用浏览器不断访问http://192.168.6.111/地址,发现Real Server One和Real
Server Two的输出会交替出现,说明客户端的请求被轮叫到了不同的Real Server上。

4.停止一台Real Server(192.168.6.240)的网络服务。

5.在客户端用浏览器不断访问http://192.168.
6.111/地址,发现输出总是Real Server Two,
说明调度器在它的管理列表中删除了宕机的Real Server,客户端的请求被全部转发到了一台正常的Real Server上。

6.再次启动Real Server(192.168.6.240)的网络服务。

7.在客户端用浏览器不断访问http://192.168.6.111/地址,发现Real Server One和Real
Server Two的输出又会交替出现,说明调度器在它的管理列表中又添加了恢复的Real Server,客户端的请求又被轮叫到了不同的Real Server上。

8.通过watch ipvsadm命令,查看到Real Server的健康状况、轮叫次数等信息和上面吻合。

9.通过抓包工具观察,请求返回的地址仍然是Load Balancer的虚拟IP,而非Real Server
的真实IP。

以上测试过程,反复了多次,结果都是一样的。

3.2. 验证MySQL负载均衡。

3.2.1.配置
Load Balancer的ipvsadm配置脚本和上面Apche的负载均衡配置基本相同,只需要把端口号改为3306。

Real Server的配置脚本也同Apche的负载均衡配置脚本。

Load Balancer的ldirectord配置文件(/etc/ha.d/ldirectord.cf)主要内容如下:
并且分别在Real Server的MySQL test库里创建link表,语句如下:
然后执行语句insert into link values (1); 插入一条记录。

3.2.2.测试步骤
1.分别运行Load Balancer和Real Server上的配置脚本。

2.在客户端不断执行命令:mysql -h192.168.6.111 -uasterisk -p1q2w3e4r,发现数据库被交
替的连接到两台Real Server的DB上,说明客户端的请求被轮叫到了不同的Real Server 上。

3.停止一台Real Server(192.168.6.240)的网络服务。

4.在客户端不断执行相同的命令进行连接,发现每次都连接在同一个DB上,说明调度器
在它的管理列表中删除了宕机的Real Server,客户端的请求被全部转发到了一台正常的Real Server上。

5.再次启动Real Server(192.168.
6.240)的网络服务。

6.在客户端不断执行相同的命令进行连接,发现数据库又被交替的连接到两台Real Server
的DB上,说明调度器在它的管理列表中又添加了恢复的Real Server,客户端的请求又被轮叫到了不同的Real Server上。

7.通过watch ipvsadm命令,查看到Real Server的健康状况、轮叫次数等信息和上面吻合。

以上测试过程,反复了多次,结果都是一样的。

3.3. 验证Apache + MySQL负载均衡。

3.3.1.配置
Load Balancer的ipvsadm配置脚本内容如下:
Load Balancer的ldirectord配置文件(/etc/ha.d/ldirectord.cf)内容包含了上面Apache和MySQL 负载均衡的配置部分。

Real Server的配置脚本同Apche的负载均衡配置脚本。

3.3.2.测试步骤
测试步骤综合了上述Apache、MySQL负载均衡测试部分,结果也相同。

3.4. 验证调度器主、备机自动切换。

3.4.1.配置
Heartbeat的配置主要是ha.cf、haresources、authkeys三个配置文件,并且备机的配置必须和主机保持一致。

下面分别列出各配置文件的主要内容。

1.主文件ha.cf的主要内容如下:
2.资源文件haresources的主要内容如下:
分别进行了基于资源httpd、httpd + mysqld、httpd + ipvsadm的配置。

3.认证文件authkeys的主要内容如下:
注:选取一种认证方式,这个文件的权限必须是600。

另外修改主、备机的主机名分别为test7和test8,并分别修改/etc/hosts文件,添加内容:
3.4.2.测试步骤
1.启动主、备机heartbeat服务,此时虚拟IP在主机上,并且主机定义的资源运行正常。

备机定义的资源是停止的,如httpd、mysqld、ipvsadm。

2.在客户端通过浏览器访问虚拟IP或者mysql通过虚拟IP进行连接都是正常的,说明主
机上的资源运行正常。

3.停掉主机的网络服务。

4.立即通过浏览器访问或MySQL连接都不正常,过大概一分多钟,又都正常了。

此时虚
拟IP转移到了备机上,并且备机上的资源相应启动,主机上的资源被停止。

说明主机宕机后,备机heartbeat在定义的时间内没有接收到来自主机的心跳,就启动服务接管了主机的工作。

5.重新启动主机的网络服务。

6.立即通过浏览器访问或MySQL连接又不正常了,过了大概一分多钟,又都正常了。


时虚拟IP又转移到了主机上,并且主机上的资源相应启动,备机上的资源被停止。

说明当主机恢复以后,又接管回了所有的服务。

以上测试过程,反复了多次,结果都是一样的。

注:主、备机的时间需要保持一致,不然heartbeat有可能工作不正常,最好都配置NTP服务。

通过以上各个功能性的验证,实现了基于直接路由和轮叫算法的高可用性Lvs集群系统。

4.性能测试
用Apache 的ab 工具对Lvs系统做了简单的性能测试,即请求一个index页面,输出结果为一字符串,测试命令如下:
ab -n 100000 -c 100 http://192.168.6.111/(总共请求100000次,每次并发100个请求。


注:调度器为虚拟机,Serv 1、Serv 2为CPU 3.0GHz、内存1G的纯Linux系统。

测试过程中通过抓包工具观察,每次测试请求都全部成功。

并且通过负载均衡提供的工具观察到,所有请求都被均衡的分配到两台服务器上。

从上面结果看,两台real server集群的性能基本上是一台的二倍。

相关文档
最新文档