1、大并发高可用负载均衡系统部署方案设计大并发高可用负载均衡系统实施部署方案某某俊泽-2015一、方案说明 为满足公司业务平台的开展需要,应对业务平台的多用户大并发量的访问请求,需要一套高效可靠的系统部署方案。 目前各业务平台存在的问题有,业务系统web数据库单机运行,单台应用服务器提供的访问能力有限,存在单点故障,虽然现在能做到故障急时报警,但出现故障后恢复时间较见;另外业务数据存在安全隐患,数据定时备份,数据库或数据库服务器故障后存在数据留失风险,仅故障恢复时间较常等。 本套部署方案旨在加固业务系统的可靠性、可扩展性,提高业务系统的并发访问,提高业务数据安全性。二、系统架构描述1、系统整体结构
2、图2、WEB端高可用负载均衡2.1 Nginx负载均衡简介 nginx是一款高性能的和反向代理服务器软件,截止到2014年底,Nginx仅次于apache成为第二大web服务器软件,而在全球最忙碌top10000中使用比例更是高达42.7%。其开展速度和流行程度已经远远超过其它同类软件,成为大型和高并发的首选。Nginx的优势轻量级 安装文件小 运行时CPU内存使用率低性能强,支持多核心,处理静态文件效率高,内核采用 的poll模型最大可以支持50K并发连接支持热部署,同时启动速度快,可以不连续服务的情况下对软件和配置进展升级支持负载均衡,支持容错和健康检查代理功能强大,支持无缓存的反向代理。
3、主流的负载均衡方案优缺点参考:c:iknowdocsharedatacur_workuid-27022856-id-3236257.html2.2 高可用方案简介 单台调度服务器如果出现故障就会造成业务不可访问,在关键的业务环境里通常都会提供一台备用调度服务器,用来降低单点故障给业务系统带来的风险。这里推荐使用开源软件Keepalive来提供nginx调度服务器的高可用,当主nginx宕机后,keepalive会将调度业务切换至备用调度主机,继续提供用户访问。 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故
4、障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器参加到服务器群中,这些工作全部自动完成,不需要人工干预,需要人工做的只是修复故障的web服务器。官方 c:iknowdocsharedatacur_work.keepalived.orgdownload.html3、数据库高可用方案介绍三、WEB端负载均衡与高可用系统部署3.1 前端调度服务器Nginx部署3.1.1 安装说明nginx安装有源码安装和系统匹配的安装包安装,这里为了方便采用redhat下的RPM包安装。3.1.2 Nginx安装1)nginx下载地址2)下载相关的安装包wget 3安装n
5、ginx官方提供的yum源,用yum安装rpm -ivh yum install nginx4)查看安装文件/etc/nginx/etc/nginx/fastcgi_params/etc/nginx/koi-utf/etc/nginx/koi-win/etc/nginx/scgi_params/etc/nginx/uwsgi_params/etc/nginx/win-utf/etc/sysconfig/nginx/usr/sbin/nginx/usr/share/nginx/usr/share/nginx/html/var/cache/nginx/var/log/nginx3.1.3 启动配置
6、1)启动服务# service nginx start 2)查看进程rootRH01 # ps -ef|grep nginx nginx 30623 30622 0 10:56 ? 00:00:00 nginx: worker process 以上信息显示一个主进程和一个工作进程rootRH01 # lsof -i:80MAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 30622 root 6u IPv4 70955 0t0 TCP *: (LISTEN)nginx 30623 nginx 6u IPv4 70955 0t0 TCP *:
7、 (LISTEN)3)删除或重命名默认配置文件4) 修改配置文件rootRH01 # vim /etc/nginx/nginx.conf default_type application/octet-stream; log_format main $remote_addr - $remote_user $time_local $request $status $body_bytes_sent $_referer $_user_agent $_x_forwarded_for; access_log /var/log/nginx/access.log main; sendfile on; #tcp
8、_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;upstream tomcat ip_hash; server 192.168.18.6:80 weight=10; server 192.168.18.7:8080 weight=10; server listen 80; server_name locahost;location / proxy_pass tomcat; 3.1.4 测试、维护3.2 高可用keepalive部署3.2.1 keepalive安装1)安装前请配置yum源2
9、)yum install -y keepalived 3)查看安装文件路径# rpm -ql keepalived/etc/keepalived/etc/sysconfig/keepalived/usr/bin/genhash/usr/libexec/keepalived/usr/sbin/keepalived4)修改配置文件主调度主机配置文件! Configuration File for keepalivedglobal_defs notification_email yaoyiwalkiesoft. notification_email_from adminwalkiesoft. smt
10、p_server mail.walkiesoft. smtp_connect_timeout 30 router_id 192.168.18.8 #对端主机IPvrrp_instance VI_1 state MASTER #主调度服务器 interface eth0 virtual_router_id 51 priority 100 # 主调度服务器使用高优先级 advert_int 1 authentication auth_type PASS auth_pass 1111 #交互密码 virtual_ipaddress 192.168.18.9 # 虚拟IP地址 备机配置文件:rootR
11、H04 # cat /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs notification_email yaoyiwalkiesoft. notification_email_from adminwalkiesoft. smtp_server mail.walkiesoft. smtp_connect_timeout 30vrrp_instance VI_1 state BACKUP interface eth0 virtual_router_id 51 priority 90 ad
12、vert_int 1 authentication auth_type PASS auth_pass 1111 virtual_ipaddress 5)启动服务在主备机同时启动服务,查看主机是否挂载浮动IP6)测试查看主机是否挂载浮动IP,停止主机keepalivd进程,查看备机是否挂载浮动IP,再恢复主机进程,查看浮动IP是否又回到主机。3.2.2 配置监控nginx进程1)经过前面的配置,如果主服务器的keepalived停止服务,备服务器会自动接收VIP对外服务;一旦主服务器的keepalived恢复,会重新接收VIP。 但如果nginx服务故障,备用调度服务器将无法觉察,所以我们要做到
13、当主服务器故障或nginx进程停止,备机能全权接收提供对处服务。2使用nmap检查nginx端口来判断nginx的状态,记得要首先安装nmap,#yum install nmap -y 3参加监控脚本如下:#!/bin/sh#check nginx server status#NGINX=/usr/sbin/nginx#如果发现nginx不正常,先重启进程,等3秒再检查,仍然失败不再尝试!PORT=80nmap localhost -p $PORT |grep $PORT/tcp openif $? -ne 0 ;then sleep 3 nmap localhost -p $PORT |gr
14、ep $PORT/tcp openfi*主备机都要添加4)为脚本添加执行权限chmod +x /etc/keepalived/nginx_chk.sh 5)在keepalive中参加脚本配置vrrp_script chk_port script /etc/keepalived/nginx_chk.sh #监控脚本 interval 2 #时间 weight 2track_script chk_port全部配置文件如:global_defs notification_email yaoyiwalkiesoft. notification_email_from adminwalkiesoft. s
15、mtp_server mail.walkiesoft. smtp_connect_timeout 30vrrp_script chk_port script /etc/keepalived/nginx_chk.sh interval 2 weight 2vrrp_instance VI_1 state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication auth_type PASS auth_pass 1111 virtual_ipaddress track_script chk
16、_port 6)更进一步,为了防止启动keepalived之前没有启动nginx , 可以在/etc/init.d/keepalived的start中首先启动nginx:start() sleep 3 -x $exec | exit 5 -e $config | exit 6 echo -n $Starting $prog: daemon $exec $KEEPALIVED_OPTIONS retval=$? echo $retval -eq 0 & touch $lockfile return $retval6)测试维护查看检测日志:# tail -f /var/log/messages四、
17、数据高可用方案部署1、主库准备工作Host IP DB_NAME DB_UNIQUE_NAME Net Service Name(网络服务名)主库192.168.137.128 ORCLDB WENDING db_wending备库192.168.137.129 ORCLDB PHYSTDBY db_phystdby保护模式:默认最大性能模式注意DataGuard启动顺序:启动顺序: 先standby ,后primary;关闭顺序: 先primary ,后standby;1.1、检查数据库是否支持Data Guard(企业版才支持),是否归档模式,Enable force logging$ s
18、qlplus /as sysdbaSQL select * from v$option where parameter = Managed Standby; 确认主库处于归档模式 SQL archive log list 先检查是否归档模式,不是如此修改 startup mount alter database archivelog; alter database open; 将primary数据库置为FORCE LOGGING模式 SQL alter database force logging; (强制产生日志)1.2、如果主库没有密码文件如此建立密码文件,从而可以OS验证的方式登陆$ o
19、rapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=iamwangnc entries=51.3、配置standby redolog最优性能模式可以忽略,如果将来变成备库且要转为其它两种模式如此要建立SQL alter database add standby logfile group 4 (/orahome/oradata/WENDING/stdby_redo04.log) size 50m, group 5 (/orahome/oradata/WENDING/stdby_redo05.log) size 50m, group 6 (
20、/orahome/oradata/WENDING/stdby_redo06.log) size 50m, group 7 (/orahome/oradata/WENDING/stdby_redo07.log) size 50m;standby redolog的组数参考公式:(online redolog组数 + 1) * 数据库线程数;单机线程数为1,RAC一般为2。standby redolog的组成员数和大小也尽量和online redolog一样。1.4、设置主库初始化参数$ sqlplus /as sysdbaSQL create pfile=/home/oracle/pfile.or
21、a from spfile; (备份参数文件)SQL alter system set LOG_ARCHIVE_CONFIG=DG_CONFIG=(WENDING,PHYSTDBY) scope=spfile; 启动db承受或发送redo data,包括所有库的db_unique_nameSQL alter system set LOG_ARCHIVE_DEST_1=LOCATION=/orahome/arch1/WENDING VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=WENDING scope=spfile; 主库归档目的地SQL
22、alter system set LOG_ARCHIVE_DEST_2=SERVICE=db_phystdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY scope=spfile; (当该库充当主库角色时,设置物理备库redo data的传输目的地)SQL alter system set LOG_ARCHIVE_MAX_PROCESSES=5 scope=spfile; 最大AR进程数SQL alter system set LOG_ARCHIVE_DEST_STATE_1=ENAB
23、LE scope=spfile; 允许redo传输服务传输数据到目的地,默认是enableSQL alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile; 同上SQL alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile; exclusive or shared,所有库sys密码要一致,默认是exclusive-以下是主库切换为备库,充当备库角色时的一些参数设置,如果不打算做数据库切换就不用设置了SQL alter system set FAL_SE
24、RVER=db_phystdby scope=spfile; 配置网络服务名,假设转换为备库角色时,从这里获取丢失的归档文件SQL alter system set FAL_CLIENT=db_wending scope=spfile; 配置网络服务名,fal_server拷贝丢失的归档文件到这里SQL alter system set DB_FILE_NAME_CONVERT=PHYSTDBY,WENDING scope=spfile; 前为切换后的主库路径,后为切换后的备库路径,如果主备库目录结构完全一样,如此无需设定SQL alter system set LOG_FILE_NAME_C
25、ONVERT=PHYSTDBY,WENDING scope=spfile; 同上,这两个名字转换参数是主备库的路径映射关系,可能会是路径全名,看情况而定SQL alter system set STANDBY_FILE_MANAGEMENT=auto scope=spfile; auto后当主库的datafiles增删时备库也同样自动操作,且会把日志传送到备库standby_archive_dest参数指定的目录下,确保该目录存在,如果你的存储采用文件系统没有问题,但是如果采用了裸设备,你就必须将该参数设置为manualSQL alter system set STANDBY_ARCHIVE_
26、DEST=LOCATION=/orahome/arch1/WENDING scope=spfile; 一般和LOG_ARCHIVE_DEST_1的位置一样,如果备库采用ARCH传输方式,那么主库会把归档日志传到该目录下有了以上参数设置,如此无论该库充当主库角色还是备库角色都无需再修改了。然后重启数据库:SQL shutdown immediateSQL startup;1.5、备份主库数据文件关闭应用服务器,停止监听,开始rman备份:$ lsnrctl stop$ rman target /RMAN backup full database format /backup/backup_%T_
27、%s_%p.bak;#RMAN sql alter system archive log current;#RMAN backup archive log all format=/backup/arch_%T_%s_%p.bak;1.6、在主库上建立备库控制文件控制文件通常需要有多份,手工将文件复制几份$ sqlplus /as sysdbaSQL alter database create standby controlfile as /backup/stdby_control01.ctl;$ cd /backup/1.7、为备库准备init参数$ sqlplus /as sysdbaSQL
28、 create pfile = /backup/initPHYSTDBY.ora from spfile;$ cd /backup/$ vi initPHYSTDBY.ora 注意主备库不同角色的属性配置,注意文件路径等,注意db_name要和主库一致,主要是以下参数:audit_file_dest=/u01/app/oracle/admin/PHYSTDBY/adumpbackground_dump_dest=/u01/app/oracle/admin/PHYSTDBY/bdumpcore_dump_dest=/u01/app/oracle/admin/PHYSTDBY/bdumpuser_
29、dump_dest=/u01/app/oracle/admin/PHYSTDBY/udump-control_files=/orahome/oradata/stdby_control01.ctl,/orahome/oradata/stdby_control02.ctl,/orahome/oradata/stdby_control03.ctldb_unique_name=PHYSTDBYlog_archive_config=DG_CONFIG=(PHYSTDBY,WENDING)log_archive_dest_1=LOCATION=/orahome/arch1/PHYSTDBY VALID_F
30、OR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PHYSTDBYlog_archive_dest_2=SERVICE=db_wending LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=WENDING-fal_client=DB_PHYSTDBYfal_server=DB_WENDINGdb_file_name_convert=WENDING,PHYSTDBYlog_file_name_convert=WENDING,PHYSTDBYstandby_archive_de
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1