大并发高可用负载均衡系统部署方案设计.docx

上传人:b****7 文档编号:8715751 上传时间:2023-02-01 格式:DOCX 页数:28 大小:237.23KB
下载 相关 举报
大并发高可用负载均衡系统部署方案设计.docx_第1页
第1页 / 共28页
大并发高可用负载均衡系统部署方案设计.docx_第2页
第2页 / 共28页
大并发高可用负载均衡系统部署方案设计.docx_第3页
第3页 / 共28页
大并发高可用负载均衡系统部署方案设计.docx_第4页
第4页 / 共28页
大并发高可用负载均衡系统部署方案设计.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

大并发高可用负载均衡系统部署方案设计.docx

《大并发高可用负载均衡系统部署方案设计.docx》由会员分享,可在线阅读,更多相关《大并发高可用负载均衡系统部署方案设计.docx(28页珍藏版)》请在冰豆网上搜索。

大并发高可用负载均衡系统部署方案设计.docx

大并发高可用负载均衡系统部署方案设计

大并发高可用负载均衡系统

〔实施部署方案〕

 

某某俊泽-2015

 

一、方案说明

为满足公司业务平台的开展需要,应对业务平台的多用户大并发量的访问请求,需要一套高效可靠的系统部署方案。

目前各业务平台存在的问题有,业务系统〔web\数据库〕单机运行,单台应用服务器提供的访问能力有限,存在单点故障,虽然现在能做到故障急时报警,但出现故障后恢复时间较见;另外业务数据存在安全隐患,数据定时备份,数据库或数据库服务器故障后存在数据留失风险,仅故障恢复时间较常等。

本套部署方案旨在加固业务系统的可靠性、可扩展性,提高业务系统的并发访问,提高业务数据安全性。

二、系统架构描述

1、系统整体结构图

 

2、WEB端高可用负载均衡

2.1Nginx负载均衡简介

nginx是一款高性能的和反向代理服务器软件,截止到2014年底,Nginx仅次于apache成为第二大web服务器软件,而在全球最忙碌top10000中使用比例更是高达42.7%。

其开展速度和流行程度已经远远超过其它同类软件,成为大型和高并发的首选。

Nginx的优势

●轻量级安装文件小运行时CPU内存使用率低

●性能强,支持多核心,处理静态文件效率高,内核采用的poll模型最大可以支持50K并发连接

●支持热部署,同时启动速度快,可以不连续服务的情况下对软件和配置进展升级

●支持负载均衡,支持容错和健康检查

●代理功能强大,支持无缓存的反向代理。

主流的负载均衡方案优缺点参考:

c:

\iknow\docshare\data\cur_work\\uid-27022856-id-3236257.html

 

2.2高可用方案简介

单台调度服务器如果出现故障就会造成业务不可访问,在关键的业务环境里通常都会提供一台备用调度服务器,用来降低单点故障给业务系统带来的风险。

这里推荐使用开源软件Keepalive来提供nginx

调度服务器的高可用,当主nginx宕机后,keepalive会将调度业务切换至备用调度主机,继续提供用户访问。

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器参加到服务器群中,这些工作全部自动完成,不需要人工干预,需要人工做的只是修复故障的web服务器。

官方c:

\iknow\docshare\data\cur_work\.keepalived.org\download.html

3、数据库高可用方案介绍

 

三、WEB端负载均衡与高可用系统部署

3.1前端调度服务器Nginx部署

3.1.1安装说明

nginx安装有源码安装和系统匹配的安装包安装,这里为了方便采用redhat下的RPM包安装。

3.1.2Nginx安装

1)nginx下载地址

2)下载相关的安装包

wget

3〕安装nginx官方提供的yum源,用yum安装

rpm-ivh

yuminstallnginx

4)查看安装文件

 

/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/nginx

3.1.3启动配置

1)启动服务

#servicenginxstart

2)查看进程

[rootRH01~]#ps-ef|grepnginx

nginx3062330622010:

56?

00:

00:

00nginx:

workerprocess

以上信息显示一个主进程和一个工作进程

[rootRH01~]#lsof-i:

80

MANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME

nginx30622root6uIPv4709550t0TCP*:

(LISTEN)

nginx30623nginx6uIPv4709550t0TCP*:

(LISTEN)

3)删除或重命名默认配置文件

 

4)修改配置文件

[rootRH01~]#vim/etc/nginx/nginx.conf

default_typeapplication/octet-stream;

log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

'$status$body_bytes_sent"$_referer"'

'"$_user_agent""$_x_forwarded_for"';

access_log/var/log/nginx/access.logmain;

sendfileon;

#tcp_nopushon;

keepalive_timeout65;

#gzipon;

include/etc/nginx/conf.d/*.conf;

upstreamtomcat{

ip_hash;

server192.168.18.6:

80weight=10;

server192.168.18.7:

8080weight=10;

}

server{

listen80;

server_namelocahost;

location/{

proxy_passtomcat;

}

}

}

3.1.4测试、维护

3.2高可用keepalive部署

3.2.1keepalive安装

1)安装前请配置yum源

2)yuminstall-ykeepalived

3)查看安装文件路径

#rpm-qlkeepalived

/etc/keepalived

 

/etc/sysconfig/keepalived

/usr/bin/genhash

/usr/libexec/keepalived

/usr/sbin/keepalived

 

4)修改配置文件

主调度主机配置文件

!

ConfigurationFileforkeepalived

global_defs{

notification_email{

yaoyiwalkiesoft.

}

notification_email_fromadminwalkiesoft.

smtp_servermail.walkiesoft.

smtp_connect_timeout30

router_id192.168.18.8##对端主机IP

}

 

vrrp_instanceVI_1{

stateMASTER##主调度服务器

interfaceeth0

virtual_router_id51

priority100##主调度服务器使用高优先级

advert_int1

authentication{

auth_typePASS

auth_pass1111##交互密码

}

virtual_ipaddress{

192.168.18.9##虚拟IP地址

}

}

备机配置文件:

[rootRH04~]#cat/etc/keepalived/keepalived.conf

!

ConfigurationFileforkeepalived

global_defs{

notification_email{

yaoyiwalkiesoft.

}

notification_email_fromadminwalkiesoft.

smtp_servermail.walkiesoft.

smtp_connect_timeout30

}

 

vrrp_instanceVI_1{

stateBACKUP

interfaceeth0

virtual_router_id51

priority90

advert_int1

authentication{

auth_typePASS

auth_pass1111

}

virtual_ipaddress{

}

}

5)启动服务

在主备机同时启动服务,查看主机是否挂载浮动IP

6)测试

查看主机是否挂载浮动IP,停止主机keepalivd进程,查看备机是否挂载浮动IP,再恢复主机进程,查看浮动IP是否又回到主机。

3.2.2配置监控nginx进程

1)经过前面的配置,如果主服务器的keepalived停止服务,备服务器会自动接收VIP对外服务;一旦主服务器的keepalived恢复,会重新接收VIP。

但如果nginx服务故障,备用调度服务器将无法觉察,所以我们要做到当主服务器故障或nginx进程停止,备机能全权接收提供对处服务。

2〕使用nmap检查nginx端口来判断nginx的状态,记得要首先安装nmap,#yuminstallnmap-y

3〕参加监控脚本如下:

 

#!

/bin/sh

#checknginxserverstatus

#NGINX=/usr/sbin/nginx

#如果发现nginx不正常,先重启进程,等3秒再检查,仍然失败不再尝试!

PORT=80

nmaplocalhost-p$PORT|grep"$PORT/tcpopen"

if[$?

-ne0];then

sleep3

nmaplocalhost-p$PORT|grep"$PORT/tcpopen"

fi

*主备机都要添加

4)为脚本添加执行权限

chmod+x/etc/keepalived/nginx_chk.sh

5)在keepalive中参加脚本配置

vrrp_scriptchk__port{

script"/etc/keepalived/nginx_chk.sh"##监控脚本

interval2##时间

weight2

}

track_script{

chk__port

}

全部配置文件如:

global_defs{

notification_email{

yaoyiwalkiesoft.

}

notification_email_fromadminwalkiesoft.

smtp_servermail.walkiesoft.

smtp_connect_timeout30

}

vrrp_scriptchk__port{

script"/etc/keepalived/nginx_chk.sh"

interval2

weight2

}

vrrp_instanceVI_1{

stateMASTER

interfaceeth0

virtual_router_id51

priority100

advert_int1

authentication{

auth_typePASS

auth_pass1111

}

virtual_ipaddress{

}

track_script{

chk__port

}

}

6)更进一步,为了防止启动keepalived之前没有启动nginx,可以在/etc/init.d/keepalived的start中首先启动nginx:

start(){

sleep3

[-x$exec]||exit5

[-e$config]||exit6

echo-n$"Starting$prog:

"

daemon$exec$KEEPALIVED_OPTIONS

retval=$?

echo

[$retval-eq0]&&touch$lockfile

return$retval

}

6)测试维护

查看检测日志:

#tail-f/var/log/messages

四、数据高可用方案部署

1、主库准备工作

HostIPDB_NAMEDB_UNIQUE_NAMENetServiceName(网络服务名)

主库192.168.137.128ORCLDBWENDINGdb_wending

备库192.168.137.129ORCLDBPHYSTDBYdb_phystdby

保护模式:

默认最大性能模式

注意DataGuard启动顺序:

启动顺序:

先standby,后primary;

关闭顺序:

先primary,后standby;

1.1、检查数据库是否支持DataGuard(企业版才支持),是否归档模式,Enableforcelogging

$sqlplus'/assysdba'

SQL>select*fromv$optionwhereparameter='ManagedStandby';

确认主库处于归档模式

SQL>archiveloglist〔先检查是否归档模式,不是如此修改〕

startupmount

alterdatabasearchivelog;

alterdatabaseopen;

将primary数据库置为FORCELOGGING模式

SQL>alterdatabaseforcelogging;(强制产生日志)

1.2、如果主库没有密码文件如此建立密码文件,从而可以OS验证的方式登陆

$orapwdfile=$ORACLE_HOME/dbs/orapw$ORACLE_SIDpassword=iamwangncentries=5

1.3、配置standbyredolog〔最优性能模式可以忽略,如果将来变成备库且要转为其它两种模式如此要建立〕

SQL>alterdatabaseaddstandbylogfile

group4('/orahome/oradata/WENDING/stdby_redo04.log')size50m,

group5('/orahome/oradata/WENDING/stdby_redo05.log')size50m,

group6('/orahome/oradata/WENDING/stdby_redo06.log')size50m,

group7('/orahome/oradata/WENDING/stdby_redo07.log')size50m;

standbyredolog的组数参考公式:

(onlineredolog组数+1)*数据库线程数;单机线程数为1,RAC一般为2。

standbyredolog的组成员数和大小也尽量和onlineredolog一样。

1.4、设置主库初始化参数

$sqlplus'/assysdba'

SQL>createpfile='/home/oracle/pfile.ora'fromspfile;(备份参数文件)

SQL>altersystemsetLOG_ARCHIVE_CONFIG='DG_CONFIG=(WENDING,PHYSTDBY)'scope=spfile;〔启动db承受或发送redodata,包括所有库的db_unique_name〕

SQL>altersystemsetLOG_ARCHIVE_DEST_1='LOCATION=/orahome/arch1/WENDINGVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=WENDING'scope=spfile;〔主库归档目的地〕

SQL>altersystemsetLOG_ARCHIVE_DEST_2='SERVICE=db_phystdbyLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=PHYSTDBY'scope=spfile;(当该库充当主库角色时,设置物理备库redodata的传输目的地)

SQL>altersystemsetLOG_ARCHIVE_MAX_PROCESSES=5scope=spfile;〔最大AR进程数〕

SQL>altersystemsetLOG_ARCHIVE_DEST_STATE_1=ENABLEscope=spfile;〔允许redo传输服务传输数据到目的地,默认是enable〕

SQL>altersystemsetLOG_ARCHIVE_DEST_STATE_2=ENABLEscope=spfile;〔同上〕

SQL>altersystemsetREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVEscope=spfile;〔exclusiveorshared,所有库sys密码要一致,默认是exclusive〕

--以下是主库切换为备库,充当备库角色时的一些参数设置,如果不打算做数据库切换就不用设置了

SQL>altersystemsetFAL_SERVER=db_phystdbyscope=spfile;〔配置网络服务名,假设转换为备库角色时,从这里获取丢失的归档文件〕

SQL>altersystemsetFAL_CLIENT=db_wendingscope=spfile;〔配置网络服务名,fal_server拷贝丢失的归档文件到这里〕

SQL>altersystemsetDB_FILE_NAME_CONVERT='PHYSTDBY','WENDING'scope=spfile;〔前为切换后的主库路径,后为切换后的备库路径,如果主备库目录结构完全一样,如此无需设定〕

SQL>altersystemsetLOG_FILE_NAME_CONVERT='PHYSTDBY','WENDING'scope=spfile;〔同上,这两个名字转换参数是主备库的路径映射关系,可能会是路径全名,看情况而定〕

SQL>altersystemsetSTANDBY_FILE_MANAGEMENT=autoscope=spfile;〔auto后当主库的datafiles增删时备库也同样自动操作,且会把日志传送到备库standby_archive_dest参数指定的目录下,确保该目录存在,如果你的存储采用文件系统没有问题,但是如果采用了裸设备,你就必须将该参数设置为manual〕

SQL>altersystemsetSTANDBY_ARCHIVE_DEST='LOCATION=/orahome/arch1/WENDING'scope=spfile;〔一般和LOG_ARCHIVE_DEST_1的位置一样,如果备库采用ARCH传输方式,那么主库会把归档日志传到该目录下〕

有了以上参数设置,如此无论该库充当主库角色还是备库角色都无需再修改了。

然后重启数据库:

SQL>shutdownimmediate

SQL>startup;

1.5、备份主库数据文件

关闭应用服务器,停止监听,开始rman备份:

$lsnrctlstop

$rmantarget/

RMAN>backupfulldatabaseformat'/backup/backup_%T_%s_%p.bak';

##RMAN>sql"altersystemarchivelogcurrent";

##RMAN>backuparchivelogallformat='/backup/arch_%T_%s_%p.bak';

1.6、在主库上建立备库控制文件〔控制文件通常需要有多份,手工将文件复制几份〕

$sqlplus'/assysdba'

SQL>alterdatabasecreatestandbycontrolfileas'/backup/stdby_control01.ctl';

$cd/backup/

 

1.7、为备库准备init参数

$sqlplus'/assysdba'

SQL>createpfile='/backup/initPHYSTDBY.ora'fromspfile;

$cd/backup/

$viinitPHYSTDBY.ora

注意主备库不同角色的属性配置,注意文件路径等,注意db_name要和主库一致,主要是以下参数:

audit_file_dest='/u01/app/oracle/admin/PHYSTDBY/adump'

background_dump_dest='/u01/app/oracle/admin/PHYSTDBY/bdump'

core_dump_dest='/u01/app/oracle/admin/PHYSTDBY/bdump'

user_dump_dest='/u01/app/oracle/admin/PHYSTDBY/udump'

--

control_files='/orahome/oradata/stdby_control01.ctl','/orahome/oradata/stdby_control02.ctl','/orahome/oradata/stdby_control03.ctl'

db_unique_name='PHYSTDBY'

log_archive_config='DG_CONFIG=(PHYSTDBY,WENDING)'

log_archive_dest_1='LOCATION=/orahome/arch1/PHYSTDBYVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=PHYSTDBY'

log_archive_dest_2='SERVICE=db_wendingLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=WENDING'

--

fal_client='DB_PHYSTDBY'

fal_server='DB_WENDING'

db_file_name_convert='WENDING','PHYSTDBY'

log_file_name_convert='WENDING','PHYSTDBY'

standby_archive_de

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1