文档库 最新最全的文档下载
当前位置:文档库 › CentOs7.3部署nginx+tomcat+redis集群说明

CentOs7.3部署nginx+tomcat+redis集群说明

CentOs7.3部署nginx+tomcat+redis集群说明
CentOs7.3部署nginx+tomcat+redis集群说明

第1章操作参考Centos7.3

1.1参考命令

1.1.1配置网络连接

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 DEVICE=eth0#网卡设备名称

ONBOOT=yes#启动时是否激活 yes | no

BOOTPROTO=static#协议类型固定IP dhcp(自动IP) bootp none

IPADDR=192.168.137.2#网络IP地址

NETMASK=255.255.255.0#网络子网地址

GATEWAY=192.168.137.1#网关地址

DNS1=211.138.24.66#连接外网时,需要配置DNS

重启下网络服务

# service network restart

查看改动后的效果

# ip addr

1.1.2关闭防火墙

systemctl stop firewalld.service #停止

firewall systemctl disable firewalld.service #禁止firewall开机启动

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

1.1.3Xshell连接虚拟机慢的解决方法

原来是ssh的服务端在连接时会自动检测dns环境是否一致导致的,修改为不检测即可,操作如下:

修改文件:/etc/ssh/sshd_config UseDNS yes --->默认为注释行UseDNS no --->把注释打开,改为no,然后重启ssh服务即可。

1.2JDK安装

安装包:《server-jre-8u65-linux-x64.tar》。以root用户安装。

1.2.1进入目录

cd opt

1.2.2授权

chmod 777 server-jre-8u65-linux-x64.tar

给予权限后显示绿色

1.2.3解压缩

tar -xvf server-jre-8u65-linux-x64.tar

1.2.4配置

命令:vi /etc/profile。

小心复制以下内容到命令行时,目录前多了一个空格,变成(JA V A_HOME= /opt/jdk1.8.0_65),导致配置出错。

export JA V A_HOME= /opt/jdk1.8.0_65

export PATH=$JA V A_HOME/bin:$PATH

export CLASSPATH=.:$JA V A_HOME/lib/dt.jar:$JA V A_HOME/lib/tools.jar

注解:

a. 你要将/opt/jdk1.8.0_65改为你的jdk安装目录

b. linux下用冒号“:”来分隔路径

c. $PATH / $CLASSPATH / $JA V A_HOME 是用来引用原来的环境变量的值在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种

常见的错误。

d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。

e. export是把这三个变量导出为全局变量。

f. 大小写必须严格区分。

命令(保存并退出)::wq!

1.2.5使修改生效

source /etc/profile

1.2.6查看进程

jps

1.2.7查看java版本

1.3apache-tomcat-7.0.67安装

安装包:《apache-tomcat-7.0.67.tar.gz》。以普通用户安装。

1.3.1授权

[root@localhost opt]# chown -R xj apache-tomcat-7.0.67.tar.gz

[root@localhost opt]# su xj

[xj@localhost etc]$ cd /opt

1.3.2解压

[xj@localhost opt]$ tar -xzf apache-tomcat-7.0.67.tar.gz

1.3.3日常维护

1.3.3.1启动服务

在bin目录下面,运行命令sh startup.sh

出现Bootstrap进程说明启动成功,可通过浏览器路径http://192.168.137.2:8080/访问服务。8080为TOMCAT端口,可通过修改conf目录下server.xml设置。

1.3.3.2停止服务

在tomcat bin/下面,运行命令sh shutdown.sh

1.3.4请求tomcat服务

http://192.168.137.2:8080/

1.4redis安装

1.4.1授权

[root@localhost opt]# chown -R xj redis-3.0.5.tar.gz [root@localhost opt]# su xj

[xj@localhost etc]$ cd /opt

1.4.2解压

[xj@localhost opt]$ tar -xzf redis-3.0.5.tar.gz

1.4.3安装依赖包

[root@localhost rpm]# rpm -ivh kernel-headers-3.10.0-514.el7.x86_64.rpm [root@localhost rpm]# rpm -ivh glibc-headers-2.17-157.el7.x86_64.rpm [root@localhost rpm]# rpm -ivh glibc-devel-2.17-157.el7.x86_64.rpm [root@localhost rpm]# rpm -ivh mpfr-3.1.1-4.el7.x86_64.rpm

[root@localhost rpm]# rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm

[root@localhost rpm]# rpm -ivh cpp-4.8.5-11.el7.x86_64.rpm

[root@localhost rpm]# rpm -ivh gcc-4.8.5-11.el7.x86_64.rpm

[root@localhost rpm]# rpm -ivh tcl-8.5.13-8.el7.x86_64.rpm

1.4.4编译

[xj@localhost redis-3.0.5]$ make MALLOC=libc

[xj@localhost redis-3.0.5]$ make test

经过一段时间的等待后,提示以下信息,表示检查成功。

1.4.5查看、修改配置文件

[xj@localhost rpm]$ cd /opt/redis-3.0.5

[xj@localhost redis-3.0.5]$ cat redis.conf

1.4.6日常维护

1.4.6.1启动服务

[xj@localhost redis-3.0.5]$ cd src

[xj@localhost src]$ ./redis-server &

#显示以下图形则为成功:

1.4.6.2测试服务

[xj@localhost root]$ cd /opt/redis-3.0.5/src [xj@localhost src]$ ./redis-cli

127.0.0.1:6379> set foo bar

OK

127.0.0.1:6379> get foo

"bar"

127.0.0.1:6379> del foo

(integer) 1

127.0.0.1:6379> get foo

(nil)

1.4.6.3停止服务

[xj@localhost src]$ ./redis-cli

127.0.0.1:6379> shutdown

not connected> exit

1.5nginx安装

1.5.1授权

[root@localhost opt]# chown -R xj nginx-1.9.6.tar.gz

[root@localhost opt]# su xj

[xj@localhost etc]$ cd /opt

1.5.2解压

[xj@localhost opt]$ tar -xzf nginx-1.9.6.tar.gz

1.5.3安装依赖包

[root@localhost rpm]# rpm -ivh pcre-8.32-15.el7_2.1.x86_64.rpm [root@localhost rpm]# rpm -ivh pcre-devel-8.32-15.el7_2.1.x86_64.rpm [root@localhost rpm]# rpm -ivh zlib-1.2.7-17.el7.x86_64.rpm

[root@localhost rpm]# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm

1.5.4源码编译安装

[xj@localhost nginx-1.9.6]$ ./configure --prefix=/opt/nginx

[xj@localhost nginx-1.9.6]$ make

[xj@localhost nginx-1.9.6]$ make install

1.5.5日常维护

#必须是root用户管理服务才能占用80端口。

1.5.5.1启动服务

[root@localhost sbin]# cd /opt/nginx/sbin/

[root@localhost sbin]# ./nginx

1.5.5.2停止服务

[root@localhost sbin]# ./nginx -s stop

1.5.5.3重启服务

[root@localhost sbin]# ./nginx -s reload

1.5.5.4浏览器访问

http://192.168.137.2/

1.5.5.5查询nginx主进程号

[root@localhost sbin]# ps -ef | grep nginx

#在进程列表里面找master进程,它的编号就是主进程号了

1.6集群配置

1.6.1配置nginx

#配置tomcat地址与权重(weight)

#配置工程项目的引用

1.6.2配置tomcat

使tomcat支持redis共享session。

1.6.

2.1复制jar包

将集群需要的jar包(commons-pool2-2.3.jar、jedis-2.7.0.jar、tomcat-redis-session-manager.jar)放置在tomcat lib文件夹下。

1.6.

2.2修改《context.xml》

增加共享redis配置。

host="192.168.1.182" 【redis服务器的ip】

port="6379" 【redis服务器的端口号】

database="0" 【redis服务器的数据库名,默认为0】maxInactiveInterval="600" 【session最大不活动时间,单位秒】

redis3.0.2 分布式集群安装详细步骤

redis3.0.2 分布式集群安装详细步骤 --(centos5.8 X64系统) 版本历史 一: redis cluster介绍篇 1:redis cluster的现状 目前redis支持的cluster特性(已亲测): 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):进群管理:cluster xxx 5):基于配置(nodes-port.conf)的集群管理 6):ASK 转向/MOVED 转向机制. 2:redis cluster 架构 1)redis-cluster架构图

架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可 (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value 2) redis-cluster选举:容错

(1)领着选举过程是集群中所有master参与,如果半数以上master节点与master 节点通信超过(cluster-node-timeout),认为当前master节点挂掉. (2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的 操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态. b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态. 二.Redis集群安装篇(centos5.8 X64系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)

tomcat手动配置部署

Tomcat手动配置部署 刘晓涛讲授,孙娟总结 手动创建JSP项目 1.将外置Tomcat解压出来后,在Tomcat里面的webapps文件夹创建一个放JSP项目的文 件夹“MyWeb”,如图: 2.在“MyWeb”JSP项目中创建必须的WEB-INF文件夹,如图: 3.在WEB-INF文件夹中也要必须创建lib文件夹,classes文件夹与web.xml文件, 如图:

4.当我们创建好JSP项目必须的WEB-INF文件夹后,我们开始创建我们在项目中所需要 的静态文件,现在我们只创建一个jsp文件夹(此文件夹跟WEB-INF在同一目录下),用来存放jsp文件,如图: 5.在jsp文件夹中创建一个jsp文件,如图: 现在我们手动创建的JSP项目就创建成功了 如何将Tomcat中的文件进行修改 1.为了保护资源的安全,我们需要有用户通过验证才可以进入我们的程序,所以我们要将 Tomcat中的conf文件夹中的tomcat-users.xml文件进行修改,如图: 说明: Rolename:是角色 Username:用户名 Password:用户名的密码 整体讲:在XXX角色下,用户可以通过用户名及密码可以访问程序中的资源

修改完后,我们就有一个用户“shmily”可以进入程序了,密码是”shmily” 2.当我们设置了用户登陆后,我们还要返回到我们的JSP项目中去,修改我们的web.xml 文件,与我们刚刚设计好的用户登陆设置相关联,如图: 注意:有注释的地方都是需要修改的地方,也就是我们刚才在tomcat-users.xml中设置的角色名

现在我们就修改完成了,那么现在我们就开始运行我们的JSP项目了 如何运行JSP项目 1.在运行JSP项目之前我们要启动tomcat(在tomcat中的bin文件夹中的startup.bat),如 图: 2.启动完后,我们开始浏览器,输入http://localhose:8080/如图:

WAS集群部署方案及安装配置手册

1. 部署方案参考 如上图所示,中间件平台主要包括两大部分: ●负载分发层 ?包括两台服务器,通过Heartbeat实现HA,提供浮动IP给客户端,保证了系 统不存在单点故障问题 ?负载分发软件采用IBM HTTP Server实现 ?通过IBM HTTP Server配置虚拟主机,实现对不同应用的请求进行分发到不同 的后台W AS中间件集群。 ●WAS中间件集群 ?包括两台4CPU(每CPU 4Core)服务,每个服务器上通过水平扩展可以启动多 个W AS服务器。 ?基于应用部署要求,为每个应用建立一个集群,逻辑上实现应用之间的隔离。 ?每个集群可以根据应用的负载,动态分配WAS服务器实例数。如HR应用访 问量较大则分配4个WAS实例。 ?但最小要保证一个集群至少包括2个W AS实现,并且这两个实例分别在不同 的物理服务器上,这样才能保证不出现单点故障。 ?部署管理器,部署在WAS Server1上。 2. WebSphere 7安装及配置 此安装配置说明仅供参考,还需要根据现场实现情况进行调整。

2.1.WAS安装 一、四台服务器拓朴结构 四台机器IP地址,名称与安装内容 其中DM控制台管理用户admin,口令 两个web服务器的管理用户也是admin,口令 二、安装后验收 http://**.**.**.**:9060/ibm/console可打开应用服务器主机的控制管理台,管理用户admin,口令****** 服务器->集群下建有应用集群 服务器->应用服务器下建有两个WEB服务 节点共有五个,分别是一个控制节点(一个dmgr节点),两个受控节点(两个app节点),两个非受控节点(两个web节点)

linux下tomcat的配置及项目的部署流程

Java的安装配置 1.在/etc/profile文件中配置相应的信息(如下) export JAVA_HOME=/usr/java/jdk1.6.0_20 export JRE_HOME=/usr/java/jdk1.6.0_20/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH 2.是配置文件生效命令:Source /etc/profile 3.输入javac –version查看配置是否成功 TOMCAT安装配置 1.修改tomcat/bin文件夹下的catalina.sh文件,增加如下的内容: export JAVA_HOME=/usr/java/jdk1.5.0_08 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export CATALINA_HOME=/usr/local/tomcat (红色可选部分) usr/local/tomcat/bin/catalina.sh start 在/etc/rc.d/rc.local中加入: /usr/local/tomcat/bin/startup.sh(实现自动启动) 2.修改tomcat/conf文件夹下的tomcat-users.xml文件,添加相应的用户角色(manager)及用户信息(用户名及密码),具体的添加详见文件中的模板:

Tomcat集群与负载均衡

Tomcat集群与负载均衡(转载) 在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有点力不从心了。另外一个常见的问题是会产生单点故障,如果该服务器坏掉,那么网站就立刻无法运作了。不论是因为要有较佳的扩充性还是容错能力,我们都会想在一台以上的服务器计算机上执行WEB应用程序。所以,这时候我们就需要用到集群这一门技术了。 在进入集群系统架构探讨之前,先定义一些专门术语: 1. 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。 2. 负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。如一个提供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。 3. 特点:在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。集群系统(Cluster)主要解决下面几个问题: 高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。 高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。 负载平衡:即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。 目前比较常用的负载均衡技术主要有: 1. 基于DNS的负载均衡 通过DNS服务中的随机名字解析来实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。 2. 反向代理负载均衡(如Apache+JK2+Tomcat这种组合) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。 3. 基于NAT(Network Address Translation)的负载均衡技术(如Linux Virtual Server,简称LVS)

WAS集群配置联调

实验6-WAS集群配置联调 实验目的:本实验会引导学生完成W AS8的集群配置,之后会安装IHS和Plugins插件,配置集群中的应用使用Web server来进行访问。 实验前提:W AS8.0已经正确安装完毕,同时已经存在一个独立服务器的概要表,概要表中有一个服务器,一般服务器名称是server1。 一、生成部署管理器的概要表 1、启动概要表管理工具应用程序,此程序在目录C:\IBM\WebSphere\AppServer\bin\ProfileManagement中,在DOS命令行中启动pmt.bat。 如果是windows操作系统,也可以通过开始菜单来启动W AS服务器,寻找启动W AS 服务器命令顺序是“开始”-》“所有程序”-》“IBM WebSphere”-》“IBM WebSphere Application Server Network Deployment V8.0”-》“工具”-》“概要表管理工具”。 2、在概要表管理工具界面,单击“创建”按钮。

3、在概要表类型中选中“管理”,单击“下一步”按钮。 4、选择“Deployment Manager”单选框,单击“下一步”按钮。

5、选择“典型概要表文件创建”单选按钮,单击“下一步”按钮。 6、取消“启用管理安全性”复选框,单击“下一步”按钮。

7、在概要文件创建总结中界面中,单击“创建”按钮。 8、部署管理器的概要表建立后,如下图,选中“启动第一步控制台”复选框,单击“完成”按钮。

9、第一步的界面如下,单击“安装验证”链接。 10、系统会自动启动DM,从弹出的界面直到看到“安装验证完成”字样后,说明DM已经正常启动安装。关闭这个界面。

Redis-集群 - 三台服务器

Redis-集群安装详细步骤 一、Redis集群部署文档(centos6系统) 现有三台物理机10.18.154.2 10.18.154.3 10.18.154.4 (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 10.18.154.2:7000 10.18.154.2:7001 10.18.154.3:7000 10.18.154.3:7001 10.18.154.4:7000 10.18.154.4:7001 二、安装Redis(10.18.154.2、10.18.154.3、10.18.154.4) 下载redis-3.2.1.tar.gz [root@localhost ~]# tar zxvf redis-3.2.1.tar.gz [root@localhost ~]# cd redis-3.2.1 [root@localhost redis-3.2.1]# make [root@localhost redis-3.2.1]# make install [root@localhost ~]# mv redis-3.2.1 /usr/local/redis [root@localhost ~]# cd /usr/local/redis/ [root@localhost ~]# mkdir /usr/local/cluster [root@localhost ~]# cp /usr/local/redis/redis.conf /usr/local/cluster/ [root@localhost ~]# vi /usr/local/cluster/redis.conf ##修改配置文件中的下面选项 port 7000 bind 10.18.154.2 127.0.0.1 daemonize yes#如果你想让它在后台运行,你就把它改成yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes [root@localhost ~]# mkdir /usr/local/cluster/7000 [root@localhost ~]# mkdir /usr/local/cluster/7001 [root@localhost ~]# cp /usr/local/cluster/redis.conf /usr/local/cluster/7000 [root@localhost ~]# cp /usr/local/cluster/redis.conf /usr/local/cluster/7001 [root@localhost ~]# cp /usr/local/cluster/redis.conf /usr/local/cluster/7002 [root@localhost 7000]# redis-server redis.conf ---启动redis服务##注意:拷贝完成之后要修改7001目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称 ##启动之后使用命令查看redis的启动情况ps -ef|grep redis

自动化运维项目总结报告

自动化运维系统研发项目 总结报告 一、项目背景 随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分。面对越来越多复杂的业务、多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷、安全稳定地持续保障,从初期的几台服务器发展到庞大的数据中心,单靠人工已无法满足在技术、业务、管理等方面的需求,那么标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被广大行业客户重视。 二、自动化运维研发阶段性 经过对市场背景的分析,在公司高层资源的支持下,2016年7月完成项目立项及成立研发项目团队,12月已完成初步框架认定工作,在对市场需求、业务环境调研过程中,认为自动化运维需满足架构独立、部署友好、可运维性、容错容灾、质量监控、性能成本、用户体验等特点。项目组经过半年的研发努力,项目研发有了阶段性的突破成果。 2.1架构独立 任何架构的产生都是为了满足特定的业务诉求,如果我们在满足

业务需求的同时,能够兼顾运维对架构管理的非功能性要求。那么我们有理由认为这样的架构是对运维友好的。站在运维的角度,所诉求的架构独立包含四个方面:独立部署、独立测试、组件规范、技术解耦等。 2.2部署友好 希望从端到端打通开发、测试、运维的所有技术环节,以实现快速部署和交付价值的目标。实现高效可靠的部署能力,要做好全局规划,要保证部署以及运营阶段的全方位运维掌控,从以上要求分析,有五个维度是对部署友好相关的:CMDB配置、环境配置、依赖管理、部署方式、发布自测等。 2.3可运维性 运维从脑海中是最理想的服务架构,首先想到的事可运维性强的那种类型。不具可运维的应用或架构,对运维团队带来的不仅仅是难题,还有阻止运维人员职业发展前进堵绊脚石,因为维护一个没有可运维性的架构,简直就是在浪费运维人员的时间。因为可运维性按操作和管理规范应归纳为以下几点:配置管理、版本管理、标准操作、进程管理、空间管理、日志管理、集中管控等。 2.4容错容灾 运维的四大职责:质量、效率、成本、安全。安全是一个运维团队首要保障的,运维人员立项的高可用架构设计应该包含以下几点:

多台服务器tomcat集群

多台服务器tomcat集群 集群背景介绍 1.1 术语定义 服务软体是b/s或c/s结构的s部分,是为b或c提供服务的服务性软件系统。服务硬体指提供计算服务的硬件、比如pc机、pc服务器。服务实体通指服务软体和服务硬体。客户端指接受服务实体服务的软件或硬件。 1.2 两大关键特性 集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个服务实体,但事实上集群由一组服务实体组成。与单一服务实体相比较,集群提供了以下两个关键特性: 可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。 高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增

强了应用的可用性。 1.3 两大能力 为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力:负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。 错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。 负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。 1.4 两大技术 实现集群务必要有以下两大技术: 集群地址--集群由多个服务实体组成,集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。具有单一集群地址(也叫单一影像)是集群的一个基本特征。维护集群地址的设置被称为负载均衡器。负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的转换。有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。只实现任务转换的负载均

Redis集群研究

Redis Sentinel数据库M-S配置(Redis的分片与复制集技术) 1.Redis Sentinel介绍 Redis Sentinel是Redis官方提供的集群管理工具,主要有三大功能: 监控,能持续监控Redis的主从实例是否正常工作; 通知,当被监控的Redis实例出问题时,能通过API通知系统管理员或其他程序;自动故障恢复,如果主实例无法正常工作,Sentinel将启动故障恢复机制把一个从实例提升为主实例,其他的从实例将会被重新配置到新的主实例,且应用程序会得到一个更换新地址的通知。 Redis Sentinel是一个分布式系统,可以部署多个Sentinel实例来监控同一组Redis实例,它们通过Gossip协议来确定一个主实例宕机,通过 Agreement协议来执行故障恢复和配置变更,一般在生产环境中部署多个实例来提高系统可用性,只要有一个Sentinel实例运行正常,就能保证被监控的Redis实例运行正常(类似Zookeeper,通过多个Zookeeper来提高系统可用性); 2.Redis HA方案 HA的关键在于避免单点故障及故障恢复,在Redis Cluster未发布之前,Redis 一般以主/从方式部署(这里讨论的应用从实例主要用于备份,主实例提供读写,有不少应用是读写分离的,读写操作需要取不同的Redis实例,该方案也可用于此种应用,原理都是相通的,区别在于数据操作层如何封装),该方式要实现HA主要有如下几种方案: 1).keepalived:通过keepalived的虚拟IP,提供主从的统一访问,在主出现问题时,通过keepalived运行脚本将从提升为主,待主恢复后先同步后自动变为主,该方案的好处是主从切换后,应用程序不需要知道(因为访问的虚拟IP 不变),坏处是引入keepalived增加部署复杂性; 2).zookeeper:通过zookeeper来监控主从实例,维护最新有效的IP,应用通过zookeeper取得IP,对Redis进行访问; 3).sentinel:通过Sentinel监控主从实例,自动进行故障恢复,该方案有个缺陷:因为主从实例地址(IP&PORT)是不同的,当故障发生进行主从切换后,应用程序无法知道新地址,故在Jedis2.2.2中新增了对Sentinel的支持,应用通过 redis.clients.jedis.JedisSentinelPool.getResource()取得的Jedis 实例会及时更新到新的主实例地址。 笔者所在的公司先使用了方案1一段时间后,发现keepalived在有些情况下会导致数据丢失,keepalived通过shell脚本进行主从切换,配置复杂,而且keepalived成为新的单点,后来选用了方案3,使用Redis官方解决方案;(方

Java Web项目开发总结

1、In Action (1)根据添加信息(insert)来考虑表中的字段,进行建表。使用PD画出ER图。要注意字段的数据类型的确定以及建表要满足三范式,减少数据冗余; (2)表建好后,根据表中各个字段来建pojo中的属性。要注意属性的数据类型和字段的数据类型要一致; (3)根据pojo中的属性确定bean的属性,直接拷贝即可,用于页面展示。在bean中,统一使用String类型变量接收前台页面传递的参数;每个HTML表单对应一个bean。HTML 表单中的字段和bean中的属性一一对应。 (4)自顶向下,依次定出action、manager、dao。先写出轮廓,跑通整个流程,再写具体实现,一点点累加,便于调试错误; (5)根据数据实体和具体业务逻辑,使用StarUML画类图,进行OOA和OOD,灵活运用设计模式。 (6)API命名: CRUD:add,get,update,delete,[list] 严格区分单复数形式,单数表示对象,复数表示对象集合。 对象、属性最好单个单词。 (7)前后台都要校验。 (8)按照资源方式组织数据接口,对前端开发帮助很大。即通过REST来实现资源的增、删、改、查。 (9)软件开发,思路最重要!代码开发多了,思路就有了。 a、一个版本一个版本递增的开发;每个版本增加一点内容; b、总结开发思路;第一步怎么做,下一步怎么做? c、用文档记录开发的思路,即第一个版本开发实现了什么功能以及开发步骤,下一个版本实现了什么功能等等?

d、程序员进行程序开发时,不要仅仅停留在代码,要深入到底层的运行机制,才可以对程序的运行机制有更准备的把握; (10)网页模板 request到template.jsp文件(此文件假设包括三个部分,即title、banner、body) web客户——> title banner———————>include:banner.jsp body————————>include:showcart.jsp (11)一步一步的定位。根据结果进行分析。 (12)分页控件 假分页: 基本思想是将所有的数据从数据库中取出,只显示有用的部分。靠的是程序的算法,实际上就是在ResultSet上进行操作。 真分页:(数据库中的一种实现) 任何数据库都会提供分页的函数操作:Oracle、MySQL(limit,即limit 开始的记录, 要查询的行数)、SQL Server(top) 基本思想是在数据库中编写特定的SQL语句。程序中只读取有用的部分,没用的部分不会加载到内存中。 (13) 2、TIPS

通过Terracotta实现基于Tomcat的Web应用集群

本文介绍如何配置Tomcat和Terracotta服务器将普通的Web应用部署到集群中,实现跨Tomcat节点的session复制,以达到负载均衡、提高系统吞吐量和灾难恢复的效果。 基本原理简介 一般利用Tomcat搭建Web应用集群有如下几种方法: 1、利用负载均衡器的粘session的方式把所有同一session的请求都发送到相同的Tomcat节点。这样不同用户的请求就被平均分配到集群中各个tomcat节点上,实现负载均衡的能力。这样做的缺点是没有灾难恢复的能力。一旦一个节点发生故障,这个节点上所有的session信息全部丢失; 2、利用Tomcat session复制的机制使得所有session在所有Tomcat节点中保持一致。当一个节点修改一个session数据的时候,该节点会把这个session的所有内容序列化,然后广播给所有其它节点。这样当下一个用户请求被负载均衡器分配到另外一个节点的时候,那个节点上有完备的session信息可以用来服务该请求。这种做法的问题是对session哪怕有一点点修改,也要把整个sessions数据全部序列化(serialize),还要广播给集群中所有节点,不管该节点到底需不需要这个session。这样很容易会造成大量的网络通信,导致网络阻塞。一般采用这种方式,当Tomcat节点超过4个时候,整个集群的吞吐量就不能再上升了; 3、第三种方式是通过cookie保存用户信息的一个或几个关键字,每一个http请求到达web应用的时候,web程序拿这个关键字到数据库中读取相关的数据,然后对其进行处理。也就是说把session数据保存到了数据库中。这样以来在内存中的session就完全不需要了。这样做的缺点就是加大了数据库的负载,使得数据库变成了集群的瓶颈。而通过构造数据库集群提高负载能力往往需要高额的成本。 Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。这样对网络的压力就非常小,各个节点也不必浪费CPU时间和内存进行大量的序列化操作。把这种集群间数据共享的机制应用在session同步上,相当于对tomcat第二种集群实现机制进行了优化,既避免了对数据库的依赖,又能达到负载均衡和灾难恢复的效果。在对比测试中,采用Terracotta搭建Tomcat集群,节点达到8个时候,整个集群的吞吐量还一直是线性增长的。 为了方便使用Terracotta搭建Tomcat集群,Terracotta提供了专门的插件tim-tomcat。下面将对集群的搭建进行详细描述。 准备工作 首先需要下载如下软件: Apache Tomcat 目前Terracotta官方支持的Tomcat版本为: Apache Tomcat Apache Tomcat Apache Tomcat Terracotta 或更高版本 安装过程 在所有机器上安装Java 请参考目前支持的软硬件平台 在所有机器上安装Terracotta 选一台机器作为Terracotta服务器

redis集群部署

redis 3.07的集群部署一:关于redis cluster 1:redis cluster的现状 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):进群管理:cluster xxx 5):基于配置(nodes-port.conf)的集群管理 6):ASK 转向/MOVED 转向机制. 2:redis cluster 架构 1) redis-cluster架构图 架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可 (4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护 node<->slot<->value 2) redis-cluster选举:容错 (1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉. (2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误 a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态. b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态. 二:redis cluster的使用 1:安装redis cluster所需软件

Tomcat部署项目时启动报错总结

Tomcat部署项目时启动报错总结 1、虚拟机报错端口被占用 tomcat的默认端口是8080(或者其他自己设置的),可能已经被其他占用。 解决方法:在tomcat安装路径下conf文件夹中的server.xml中把断口号改掉!如果一台机 器上使用多个tomcat,则改掉所有相关的端口避免重复了,包括想如下 在server.xml中找到如下地方改掉port的值 ● ●(改完后看看和本机上正在用 的tomcat是不是有重复的port) 2、tomcat的启动窗口一闪而过 Tomcat启动的dos窗口一闪而过,如何看出错信息? 在DOS窗口运行STARTUP.BAT文件, 另外,吧startup.bat文件最后的 call "%EXECUTABLE%" start %CMD_LINE_ARGS% 改成: call "%EXECUTABLE%" run %CMD_LINE_ARGS% 分析原因1:jdk的环境变量没有配置好 解决方法:检查jdk环境变量的配置是否正确,或者重新配置jdk的系统环境变量JDK环境变量配置的步骤如下: 1.我的电脑-->属性-->高级-->环境变量. 2.配置用户变量: a.新建JAVA_HOME C:\Program Files\Java\j2sdk1.5.0(JDK的安装路径) b.新建 PATH (注意:把java的配置放在path的最前面) %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin c.新建CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 3.测试环境变量配置是否成功: 开始-->运行--〉CMD 键盘敲入:JAVAC JAVA 出现相应的命令,而不是出错信息,即表示配置成功! 环境变量配置的理解: 1. PATH环境变量。作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin 目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。 2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。 3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

windows下Tomcat负载均衡和集群配置

轻松实现Apache,Tomcat集群和负载均衡 作者:罗代均 ldj_work#https://www.wendangku.net/doc/c52663423.html,,转载请保持完整性 0,环境说明 Apache :apache_2.0.55 1 个 Tomcat: apache-tomcat-5.5.17 (zip版) 2个 mod_jk:: mod_jk-apache-2.0.55.so 1个 第一部分:负载均衡 负载均衡,就是apache将客户请求均衡的分给tomcat1,tomcat2....去处理 1.安装apche,tomcat https://www.wendangku.net/doc/c52663423.html,/下载Apache 2.0.55 https://www.wendangku.net/doc/c52663423.html,/download-55.cgi下载tomcat5.5 zip版本(解压即可,绿色版) https://www.wendangku.net/doc/c52663423.html,/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/下载mod_jk,注意和 apache版本匹配 按照jdk,我的路径为:E:\ide\apache\Apache2 解压两份Tomcat, 路径分别为 E:\ide\tomcat1,E:\ide\tomcat2

下载mod_jk

2.修改Apache配置文件http.conf 在apache安装目录下conf目录中找到http.conf 在文件最后加上下面一句话就可以了 include "E:\ide\apache\Apache2\conf\mod_jk.conf"

2. http.conf 同目录下新建mod_jk.conf文件,内容如下 #加载mod_jk Module LoadModule jk_module modules/mod_jk-apache-2.0.55.so #指定 workers.properties文件路径 JkWorkersFile conf/workers.properties #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器JkMount /*.jsp controller 3.在http.conf同目录下新建 workers.properties文件,内容如下 worker.list = controller,tomcat1,tomcat2 #server 列表 #========tomcat1======== worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多 #========tomcat2======== worker.tomcat2.port=9009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多

WAS7.0集群配置

WAS7.0集群配置 1.任务说明 在给定的两台主机上搭建was集群,要求主机一上建立一个管理节点和一个服务节点主机二上建立一个服务节点,并使这两个节点在一个集群下运行。 2.前题需求 两台主机操作系统字符集一致 两台主机已经安装相同版本的WAS 3.测试环境说明 操作系统版本:SuseLinux11Sp3 X86-64位 操作系统字符集:zh_CN.gb18030 WAS版本:7.0.0.27 主机一名称/IP:wasdmgr/1.1.1.10 主机二名称/IP:wasnode2/1.1.1.11 管理单元名称:AmfeDmgrCell01 管理节点名称:AmfeDmgr 节点一名称:AmfeNode01 节点二名称:AmfeNode02 集群名称:AmfeClus 4.详细步骤 4.1.检查两台主机已经安装的概要文件,并删除他们。 4.1.1.root用户登录“wasdmgr”主机、执行下面操作。 显示概要文件并删除现有概要文件

4.1.2.root用户登录“wasnode2”主机、执行下面操作。 显示概要文件并删除现有概要文件 4.1.3.修改管理节点所在主机”wasdmgr”上的hosts文件如下 图

4.1.4.修改服务节点二所在的主机”wasnode2”上hosts文件 如下图 4.2.root用户操作“wasdmgr”主机创建管理节点及服务 节点,并将服务节点添加到管理节点上。 4.2.1.创建管理节点:AmfeDmgr 创建命令:./manageprofiles.sh -create -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/dmgr -cellName AmfeDmgrCell01 -profileName AmfeDmgr -profilePath /opt/IBM/WebSphere/AppServer/profiles/AmfeDmgr 4.2.2.创建服务节点一:AmfeNode01 创建命令:./manageprofiles.sh -create -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/managed -nodeName AmfeNode01 -profileName AmfeNode01 -profilePath /opt/IBM/WebSphere/AppServer/profiles/AmfeNode01

redis-cluster原理分析

Redis Cluster 原理分析 文章较长,如需转载可分段。转载请标明作者以及文章来源,谢谢! 作者介绍 姓名:李航 工作经历: 5年多互联网工作经验,先后在58同城,汽车之家,优酷土豆集团工作。目前主要在优酷土豆集团任职高级开发工程师,目前主要负责大数据基础平台Redis集群开发及运维等工作。主要关注领域Nginx,Redis,分布式系统,分布式存储。如果对nginx或者redis感兴趣的同学可以发简历到gaosong@https://www.wendangku.net/doc/c52663423.html,。本文来源自“Redis技术交流群”线上分享。李航ID:Lucien_168。群主ID:gnuhpc。redis中国用户组qq群:374538650。后期的分享我们会同期进行。 这次主要是给大家分享的提纲如下: 1.简介 2.集群通信 3.数据分布及槽信息 4.数据迁移 5.通信故障 1.简介 继上次分享的优酷土豆的Redis服务平台化之路,这次着重来分享下Redis Cluster浅析,欢迎大家互相多交流学习。 Redis Cluster是一个高性能高可用的分布式系统。由多个Redis实例组成的整体,数据按照Slot存储分布在多个Redis实例上,通过Gossip协议来进行节点之间通信。

Redis Cluster功能特点如下: 1)所有的节点相互连接 2)集群消息通信通过集群总线通信,,集群总线端口大小为客户端服务端口+10000,这个 10000是固定值 3)节点与节点之间通过二进制协议进行通信 4)客户端和集群节点之间通信和通常一样,通过文本协议进行 5)集群节点不会代理查询 6)数据按照Slot存储分布在多个Redis实例上 7)集群节点挂掉会自动故障转移 8)可以相对平滑扩/缩容节点

WAS6.1安装与集群配置详解

WebSphere集群安装说明 目录 WebSphere集群安装说明 (1) 一、集群的安装 (2) 二、Deployement Manager的安装 (2) 三、Websphere update Installer的安装 (7) 四、Websphere 补丁的安装 (10) 五、安装HIS和Plugin (17) 六、Websphere 节点的安装 (22) 1.32位机器的操作 (22) 2.64位机器的操作 (29) 七、Websphere 集群的创建 (31) 八、配置web服务器 (36) 九、应用数据源的配置 (37) 十、应用部署 (40) 十一、命令操作 (42) 十一、nfs操作 .............................................................................错误!未定义书签。十二、注意事项 ...........................................................................错误!未定义书签。十三、程序更新 .. (42) 十四、相关地址:........................................................................错误!未定义书签。

一、集群的安装 WAS集群由一组应用服务器组成,每个服务器上部署了同样的应用程序。通过集群可以实现可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)。WAS ND提供水平集群和垂直集群两种形式,垂直集群是指同一机器上部署多个服务器,充分利用硬件资源,而水平集群利用多台机器资源,每台机器部署相同的应用。 二、Deployement Manager的安装 Was安装,在安装介质下输入命令./install

相关文档