去哪儿系统高可用之法,openstack高可用环境搭建

原标题:去何方系统高可用之法:搭建故障练习平台

Windows 二零一一 系统搭建高可用故障转移集群

1、单个实例

当系统中唯有壹台redis运营时,一旦该redis挂了,会导致整个系统不可能运营。

单个实例

一 方案设计

我介绍

一、故障转移集群介绍 2

二、备份

鉴于单台redis出现单点故障,就会促成整个系统不可用,所以想到的艺术自然就是备份(一般工业界认为比较安全的备份数应该是3份)。当壹台redis出现难题了,另1台redis能够继续提供劳务。

备份

④节点基本消息:

王鹏,20一7年参加去哪儿机票事业部,首要从事后端研究开发工作,最近在机票事业部负责行程单和故障演习平台以及国有服务ES、数据同步中间件等相关的研究开发工作。

一.1 系统介绍 贰

三、自动故障转移

即使上边redis做了备份,看上去很周全。但由于redis近来只帮忙主从复制备份(不支持主主复制),当主redis挂了,从redis只可以提供读服务,无法提供写服务。所以,还得想艺术,当主redis挂了,让从redis升级成为主redis。

那就须求活动故障转移,redis
sentinel带有这些功用,当三个主redis不可能提供劳务时,redis
sentinel可以将2个从redis升级为主redis,并对别的从redis进行配备,让它们选拔新的主redis举办复制备份。

机动故障转移

10.192.44.148

去何方网200五年成立现今,随着系统规模的渐渐扩充,已经有那多少个个应用类别,那几个体系里面包车型客车耦合度和链路的复杂度不断抓牢,对于大家构建分布式高可用的种类架构具有非常的大挑衅。我们供给一个阳台在运营期自动注入故障,检查实验故障预案是还是不是起效——故障练习平台。

一.二 工作原理 2

四、出手实践

1.环境

此间运用三台服务器,每台服务器上打开一个redis-server和redis-sentinel服务,redis-server端口为九千,redis-sentinel的端口为6800,修改暗中认可端口是平安的率先步\_

redis-server说明

  • 192.168.56.101:8000 主
  • 192.168.56.102:8000 从
  • 192.168.56.103:8000 从

redis-sentinel说明

  • 192.168.56.101:6800
  • 192.168.56.102:6800
  • 192.168.56.103:6800

2.搭建redis系统

首先下载安装redis

wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make

cd src
#复制redis相关命令到/usr/sbin目录下,这样就可以直接执行这些命令,不用写全路径
sudo cp redis-cli  redis-server  redis-sentinel   /usr/sbin/

在redis目录下有redis.conf和sentinel.conf配置文件示例,使用sudo cp redis.conf sentinel.conf /etc/一声令下将多个布局文件复制到/etc目录下(当然也得以在/etc/目录新建配置文件),然后修改配置文件。

修改主redis-server配置文件内容如下:

port  8000           #修改端口是安全的第一步
daemonize  yes
bind  0.0.0.0
pidfile   /var/run/redis-8000.pid
logfile   /var/log/redis/redis-8000.log

修改从redis-server配置文件内容如下:

port  8000           #修改端口是安全的第一步
daemonize  yes
bind  0.0.0.0
pidfile   /var/run/redis-8000.pid
logfile   /var/log/redis/redis-8000.log
slaveof  192.168.56.101  8000    #从redis比主redis多这一行

启动redis-server。

sudo redis-server /etc/redis.conf

四个redis服务运营实现后,进入命令行,执行info
replication查看当前为主配置。

主节点上查看主从音讯

察觉并从未从节点音讯。

3.主从间不可能通讯

此间的原因是防火墙屏蔽了七千端口,须要修改防火墙设置,开放八千端口(同理redis-sentinel的6800端口)。

# 打开防火墙配置文件,增加8000端口
sudo vim /etc/sysconfig/iptables

#修改完后,需要重启防火墙
sudo service iptables restart

增加8000端口和6800端口

然后再次进入主节点,查看主从音信,能够窥见八个从节点消息,注明redis-server主从曾经布置完成。

主节点上查看主从音信

4.搭建redis-sentinel系统

redis-sentinel程序方面已经设置过了,这里只要求修改配置文件就能够了。修改/etc/sentinel.conf,尽管未有创制即可。

修改sentinel.conf配置文件内容如下:

daemonize yes
port  6800
logfile  /var/log/redis/sentinel.log
pidfile  /var/run/sentinel.pid
sentinel monitor master8000 192.168.56.101 8000 2
#5秒内master6800没有响应,就认为SDOWN
sentinel down-after-milliseconds master8000 5000  
sentinel failover-timeout  master8000 15000

启动redis-sentinel。

redis-sentinel  /etc/sentinel.conf

三个redis-sentinel服务运行实现后,连接任意sentinel服务能够获知当前主redis服务消息。

sentinel监察和控制意况

10.192.44.149

一、背景

2、实验目标 二

五、测试

1.把住redis停掉

redis-cli -h 192.168.56.101 -p 8000 shutdown

二.查看redis-sentinel的监察情状

sentinel监察和控制状态

意识拾二那台redis-server提高为主库。

时至后天,redis的高可用方案已经搭建实现。

10.192.44.150

那是某事业部的系统拓扑图:

二.一 验证故障转移效果 二

6、客户端程序

客户端程序(如PHP程序)连接redis时索要ip和port,但redis-server举办故障转移时,主redis是浮动的,所以ip地址也是浮动的。客户端程序如何感知当前主redis的ip地址和端口呢?redis-sentinel提供了接口,请求任何1个sentinel,发送SENTINEL get-master-addr-by-name <master name>就能博安妥前主redis的ip和port。

收获当前主redis的ip和port

客户端每一遍连接redis前,先向sentinel发送请求,获得主redis的ip和port,然后用重临的ip和port连接redis。

那种措施的缺陷是威名赫赫的,每一回操作redis至少供给发送一次一连请求,第3回呼吁sentinel,第贰次请求redis。

php请求sentinel程序代码可参见:https://github.com/huyanping/redis-sentinel

更好的法子是运用VIP,当然那对布署的条件有自然的渴求,比如redis搭建在Ali云服务器上,大概不协理VIP。

VIP方案是,redis系统对外始终是同一ip地址,当redis实行故障转移时,必要做的是将VIP以前边的redis服务器漂移到明天新的主redis服务器上。

譬如:当前redis系统中主redis的ip地址是1玖二.16八.5陆.10壹,那么VIP(1九贰.16八.5陆.250)指向192.168.5陆.十一,客户端程序用VIP(1玖二.16捌.5陆.250)地址连接redis,实际上连接的就是当下主redis,那样就幸免了向sentinel发送请求。

当主redis宕机,举办故障转移时,192.168.5陆.102那台服务器上的redis升高为主,这时VIP(19二.168.5陆.250)指向192.16八.56.拾二,那样客户端程序不供给修改任何代码,连接的是1九二.16八.5陆.10贰那台主redis。

VIP指向192.168.56.101

故障转移后,VIP漂移指向1玖二.168.5陆.十二

10.192.44.151

图片 1

二.贰 验证高可用集群的可用性,以及援救的服务类型 2

七、漂移VIP

那就是说以往的难题是,怎么样在展开redis故障转移时,将VIP漂移到新的主redis服务器上。

那里能够运用redis
sentinel的2个参数client-reconfig-script,这些参数配置执行脚本,sentinel在做failover的时候会执行那几个剧本,并且传递三个参数<master-name>、
<role>、 <state>、 <from-ip>、 <from-port>、
<to-ip>
、<to-port>,在那之中<to-ip>是新主redis的IP地址,能够在这些本子里做VIP漂移操作。

sentinel client-reconfig-script master8000   /opt/notify_master6800.sh

修改四个服务器的redis-sentinel配置文件/etc/sentinel.conf,扩张地点一行。然后在/opt/目录下开创notify_master6800.sh脚本文件,这些本子做VIP漂移操作,内容如下:

#notify_master6800.sh脚本内容
#!/bin/bash
MASTER_IP=$6  #第六个参数是新主redis的ip地址
LOCAL_IP='192.168.56.101'  #其他两个服务器上为192.168.56.102,192.168.56.103
VIP='192.168.56.250'
NETMASK='24'
INTERFACE='eth1'
if [ ${MASTER_IP} = ${LOCAL_IP} ];then   
    /sbin/ip  addr  add ${VIP}/${NETMASK}  dev ${INTERFACE}  #将VIP绑定到该服务器上
    /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
    exit 0
else 
   /sbin/ip  addr del  ${VIP}/${NETMASK}  dev ${INTERFACE}   #将VIP从该服务器上删除
   exit 0
fi
exit 1  #如果返回1,sentinel会一直执行这个脚本

今日当前主redis是19二.16八.5陆.拾二,供给手动绑定VIP到该服务器上。

/sbin/ip  addr add 192.168.56.250/24 dev eth1
/sbin/arping -q   -c 3 -A 192.168.56.250 -I eth1 

下一场,去另四个服务器上通过VIP地址连接redis-server和redis-sentinel。

通过VIP连接redis

从下面也得以见见当前主redis是1玖二.16八.5陆.十二。

上边关闭那台redis服务,看看VIP是不是漂移到另1台服务器上。

redis-cli -h 192.168.56.102 -p 8000 shutdown

因而询问sentinel发现1玖二.16八.5陆.拾三升级为主。

透过拜访VIP连接redis,发现VIP确实指向了1玖二.168.5六.拾三。

每台装备一个12八G的ssd系统盘,四个贰T的数据盘

系统里面包车型地铁信赖卓殊复杂、调用链路很深、服务时期从未分支。在那种复杂的借助下,系统一发布出了几起故障:

3、实验原理 3

八、总结

通过上边的操作,使用redis主从 + 哨兵(sentinel)+
漂移VIP
的方案搭建了二个redis高可用系统,但以此类别保险的是单个redis实例的高可用,所以适合业务相比小的选取。假如事情相比大,并发量比较高,提出搭建redis集群,比如官方redis
cluster,还有开源的codings集群。

其余,漂移VIP可以应用keepalived软件来兑现,那里就不多介绍了。

usr:root

  • 弱注重挂掉,主流程挂掉,修改报废凭据的成本境况,下单主流程失利;
  • 着力服务调用量陡增,某服务超时引起相关联的有着服务“雪崩”;
  • 机房互连网可能有个别机器挂掉,无法提供基本服务。

3.一 实验拓扑 3

pwd:9b648

多个故障原因:

叁.二 实验环境设备 3

一.1 互连网方案

  • 系统强弱信赖混乱、弱信赖无降级;
  • 系统流量剧增,系统容积不足,未有限流熔断机制;
  • 硬件能源网络出现难题影响系统运营,未有高可用的互联网架构。

四、配置步骤 四

现阶段先利用单网卡方案,即每台装备选取1个网卡。IP地址即选取当下的地点。

饶有的难题,在那种复杂的注重结构下被放大,四个借助三十多少个SOA服务的类别,每一个服务9九.9玖%可用。9九.9玖%的三13回方≈9玖.7%。0.三%意味着壹亿次呼吁会有三,000,00次破产,换算成时间差不多每月有一个小时服务不安宁。随着服务正视数量的变多,服务不平稳的票房价值会呈指数性提升,这一个题材最终都会转接为故障表现出来。

四.一 配置域服务器 四

接轨将管理互联网、存款和储蓄互连网、存款和储蓄管理网络、虚拟机网络、外部互联网分开。近年来采纳单网卡格局。

2、系统高可用的方法论

肆.贰  iSCSI 虚拟存款和储蓄配置 1八

IP地址列表:

怎么着创设2个高可用的连串啊?首先要分析一下不可用的成分都有哪些:

四.三 配置故障转移集群服务 4五

HostnameIP(eth0)IP1(备用IP)

图片 2

4.四  验证集群 陆三

隧道IP(eth0:1)openstack roleCeph mon roleCeph osd配置Vip

高可用系统独立实践

伍、实验结果证实 68

node110.192.44.148(eth0)172.16.2.148(eth3)

辩解上的话,当图中具有的事务都做完,大家就能够认为系统是一个当真的高可用系统。但正是如此啊?

5.一  验证故障转移 68

Controller1+network1Mon0Osd0~osd34Core 16G

那么故障练习平台就欢愉登场了。当上述的高可用实践都做完,利用故障练习平台做一回真正的故障练习,在系统运转期动态地注入一些故障,从而来验证下系统是不是比照故障预案去实践相应的降级只怕熔断策略。

5.二 高可用集群的验证 69

node210.192.44.149(eth0)172.16.2.149(eth1)

三、故障演习平台

 

去哪儿系统高可用之法,openstack高可用环境搭建。Controller2+network2Mon1Osd4~osd74Core 16G

故障演习平台:查看故障预案是还是不是真的的起功能的阳台。

 

node310.192.44.150(eth0)172.16.2.150(eth1)

故障类型:第二总结运转期非常、超时等等。通过对系统有些服务动态地流入运转期至极来达成模拟故障的指标,系统遵照预案执行相应的政策验证系统是或不是是真正的高可用。

 

Compute1Mon2Osd8~osd114Core 16G

1、故障演习平台的全体框架结构

一、故障转移集群介绍

node410.192.44.151(eth1)172.16.2.151(eth2)

故障练习平台架构主要分为四部分:

壹.一 系统介绍

Compute2Mon3Osd12~osd158Core 16G

图片 3

    故障转移群集是本着具有深入运营的内部存款和储蓄器中状态或富有大型的、频仍更新的数码状态的应用程序而安顿。这么些应用程序称为状态应用程序,并且它们包涵数据库应用程序和新闻应用程序。故障转移群集的拔尖使用包蕴文件服务器、打字与印刷服务器、数据库服务器和音信服务器。

只顾,后来已调整为:

  • 前台体现系统(WEB):呈现系统里面包车型的士拓扑关系以及种种AppCode对应的集群和措施,能够选用具体的法子实行故障的注入和解除;
  • 公布种类(Deploy):其一系统首要用于将故障演练平台的Agent和Binder包发布到目的应用程式的机械上还要运营推行。前台体现系统会传递给公布平台要实行故障注入的AppCode以及指标APP的IP地址,通过那四个参数发表种类能够找到相应的机器进行Jar包的下载和开发银行;
  • 劳动和指令分发系统(Server):其一体系第2是用来命令的散发、注入故障的事态记录、故障注入和清除操作的逻辑、权限校验以及相关的Agent的归来消息接收效果。前台页面已经接入QSSO会对当前人能够操作的IP列表做故障注入,防备危害。后端命令分发的模块会和配置在目的应用程式上的Agent进行通讯,将下令推送到Agent上举行字节码编织,Agent执行命令后回到的始末通过Server和Agent的长连接传回Server端;
  • Agent和Binder程序:Agent负责对目的APP做代办并且做字节码增强,具体代理的艺术能够由此传输的下令来支配,代理方法后对章程做动态的字节码增强,这种字节码增强全部无侵入、实时生效、动态可插拔的特色。Binder程序首要是透过宣布系统传递过来的AppCode和起步端口(ServerPort)找到对象应用软件的JVM进度,之后执行动态绑定,完毕运转期代码增强的意义。

一.二 工作规律

因为150、15一调升了libvirt,然后150老是重启后都不通

二、 Agent全体架构

    故障转移群集是基于域的管理格局安插, 以 “心跳机制” 来监视各样节点的健康意况;假使在群集中的壹台服务器发生了故障,则群集中的别样服务器会立时接手并继承运营。而这个服务器是经过心跳网络来拓展互动物检疫查评定的,当服务器产生故障时,其余的服务器就会检验不到故障服务器的心跳实信号,此时就会觉得此服务器产生故障,并立即接手并卫冕运转。

所以改为先安装(控制节点+网络节点:14八)+(总结节点:149),前面高可用再把150、15壹装置上:

眼下AOP的落到实处有三种方式:

二、实验指标

HostnameIP(eth0)IP1(备用IP)

  • 静态编织:静态编织发生在字节码生成时根据早晚框架的条条框框提前将AOP字节码插入到目的类和措施中;
  • 动态编织:在JVM运维期对钦赐的措施成功AOP字节码增强。常见的艺术超越2/四行使重命名原有办法,再新建1个同名方法做代理的干活情势来形成。

2.一 验证故障转移职能

隧道IP(eth0:1)openstack roleCeph mon roleCeph osd配置Vip

静态编织的标题是只要想更改字节码必须重启,那给支付和测试进度导致了十分大的紧Baba。动态的不二等秘书诀就算能够在运转期注入字节码实现动态增加,但未有统一的API很不难操作错误。基于此,我们使用动态编织的办法、规范的API来规范字节码的成形——Agent组件。

    学习搭建Windows故障转移集群,测试Windows高可用集群与高可用集群开始展览对照。

10.192.44.148(eth0)172.16.2.148(eth3)eth0:1controller1+network1Mon0Osd0~osd34Core
16G

Agent组件:因此JDK所提供的Instrumentation-API完成了运用HotSwap技术在不重启JVM的情况下促成对自由方法的拉长,无论大家是做故障演练、调用链追踪(QTrace)、流量录像平台(Ares)以及动态扩充日志输出BTrace,都需求3个装有无侵入、实时生效、动态可插拔的字节码增强组件。

二.2 验证高可用集群的可用性,以及援助的服务类型

10.192.44.149(eth0)172.16.2.149(eth1)eth0:1compute1Mon1Osd4~osd74Core
16G

Agent的轩然大波模型

    在故障转移集群的底子上搭建常用基础服务器(DTC、SQL、文件共享集群、Hyper-v),来测试架构的主旋律。

第二个网口的IP: 172.16.二.14八 149150 151

如图所示,事件模型主要可分为叁类事件:

三、实验原理

[root@compute1 network-scripts]# catifcfg-eth1

图片 4

叁.壹 实验拓扑

DEVICE=eth1

BEFORE在措施执行前事件、THROWS抛出格外事件、RETULANDN重回事件。那叁类事件能够在方式执行前、重临和抛出至极那三种情形做字节码编织。

图片 5

ONBOOT=yes

一般来说代码:

 

STARTMODE=onboot

// BEFORE

叁.二 实验环境设备

MTU=1500

try {

序号

设备名称

IP规划

用途

1

iSCSI存储服务器

172.16.200.73

共享存储虚拟磁盘

2

域服务器

172.16.200.70

wangzx-noc.com域服务器

3

MSHV-1服务器

172.16.200.71

节点服务器1:  MSHV-1

4

MSHV-2服务器

172.16.200.71

节点服务器2:  MSHV-2

5

集群

172.16.200.75

集群虚IP

BOOTPROTO=static

/*

3.三 实验检查实验方法

IPADDR=172.16.2.150

* do something…

搭建分布式事务协调器,和hyper-v验证高可用服务的可用性。

NETMASK=255.255.255.0

*/

表明格局:

GATEWAY=10.192.44.254

foo();

一. 服务器宕机测试

行使多少个节点作为(控制+网络)的复用节点

// RETURN

二. 大体网卡中断

应用七个节点作为计量节点

return;

叁. 故障转移集群服务截至

原因:

} catch (Throwable e) {

 

控制节点运营服务尤其多,不吻合任何用来复用为总括节点跑虚拟机

// THROWS

 

估测计算节点需求资源多(CPU、内部存款和储蓄器),所以最大的财富的那台作为计算节点。

}

 

一.2 存款和储蓄方案

事件模型能够完结多个功用:

四、配置步骤

当前系统盘为SSD:128G,存款和储蓄盘为SATA:二T

  • 在方法体执行在此之前平昔重临自定义结果对象,原有办法代码将不会被实施;
  • 在方法体重临在此以前再一次协会新的结果对象,甚至足以变更为抛出很是;
  • 在方法体抛出非常之后再也抛出新的极度,甚至足以改变为健康重回。

四.一 配置域服务器

系统盘还有空间,将剩下空间作为ceph的journal空间,剩余差不离有90G,设置为hda四分区。

Agent如何预防“类污染”

1、打开服务器管理器,点击添加剧中人物

HostnameCeph monCeph journalCeph osd

在支付Agent的时候,第三个使用是故障演习平台,那么这年实在我们并不必要Agent执行的经过中有自定义结果对象的归来,所以率先个版本的Agent采用硬编码的点子开始展览动态织入:

图片 6

Node1Mon0/dev/hda5Osd.0~osd.3: sdb1/sdc1/sdd1/sde1

图片 7

 

Node2Mon1/dev/hda5Osd.4~osd.7: sdb1/sdc1/sdd1/sde1

故障类加载模型

 

Node3Mon2/dev/hda5Osd.8~osd.11: sdb1/sdc1/sdd1/sde1

首先介绍下多少个类加载器:

图片 8

Node4Mon3/dev/hda5Osd.12~osd.15: sdb1/sdc1/sdd1/sde1

  • BootstrapClassLoader带领类加载器加载的是JVM自己须要的类,这一个类加载使用C++语言完成的,是虚拟机自个儿的1局地;
  • ExtClassLoader它承担加载<JAVA_HOME>/lib/ext目录下或许由系统变量-Djava.ext.dir钦点位路径中的类库;
  • AppClassLoader它承受加载系统类路径java-classpath或-D
    java.class.path钦定路线下的类库,也正是大家经常选择的classpath路径;
  • CommonClassLoader以及下面的都以汤姆cat定义的ClassLoader。

 

Rbd pools:

Agent和有关的lib会放到AppClassLoader这1层去加载,利用Javasist做字节码的织入,所以Javasist的加载器就是AppClassLoader。

 

ServiceRbd poolPg nums

可是想更改的是汤姆cat
WebClassLoader所加载的com.xxx.InvocationHandler这么些类的Invoke方法,差别的ClassLoader之间的类是不能够相互走访的,做字节码的转移并不必要这几个类的实例,也不必要重临结果,所以能够经过Instrument
API获得那几个类加载器,并且能够依照类名称获取到这一个类的字节码进行字节码变换。故障类Drill.class和变形后的com.xxx.InvocationHandler.class重新load到JVM中,实现了插桩操作。

图片 9

GlanceImages128

以Dubbo为例表明下什么注入故障和排除故障:

 

CinderVolumes128

图片 10

 

NovaVms128

Dubbo调用的流入进度

图片 11

备考:先给磁盘分区,否则安装时给sdx分区,每一个磁盘全部分成sdx一,ceph-deploy
分出来的sdx贰头有5G轻重。

  • 服务A调用服务B在Client端的Proxy层做AOP;
  • 起步Agent并且生成3个Drill类invoke方法,抛出贰个运维期卓殊;
  • 字节码变形:在代码第叁行在此之前扩展Drill.invoke();
  • 假诺想更换分外类型,改变Drill类即可,换来Sleep 3s
    ClassRedifine事后会重复load到JVM实现故障类型的中间转播或然解除。

 

一.叁 运转服务

蒙受的难题

 

Openstack role

下边包车型大巴方法相似很周详的解决了难题,不过随着平台的接纳工作线要对许多接口和章程同时举办故障演习,那么大家转移的Drill类里面就会有各类:

图片 12

ControllerHttpd,rabbitmq,mysql;keystone,
glance, neutron-server, nova-api & scheduler, cinder-api & scheduler

if method==业务线定义方法

 

NetworkNeutron agents:l3-agent, openvswitch-agent, dhcp-agent

do xxx

 

ComputeNova-compute,neutron-openvswitch,cinder-volume

再者很简单拼接出错并且难以调节和测试,只可以把变化的类输出为文件,查看自个儿写的字节码编写翻译成class文件是还是不是科学,大致太难受了!

图片 13

壹.肆 其余备注

怎么消除?

 

(一)一时不设置ceilometer,比较功耗源,且当前不对ceilometer做高可用

新的架构需求消除多个难题:

 

(二)权且不设置swift对象存款和储蓄

  • 类隔绝的题材:不要污染原生应用程式;
  • 事件的落实是可编写翻译的;
  • 支撑回到自定义的结果。

图片 14

(三)能源万分有限,验证时可能只好开二台虚拟机

下壹版本的Agent完成就发出了,把拥有Agent的类和落到实处的法力抽象出来,放到四个自定义的AgentClassLoader里面,字节码注入到指标应用程式后能够通过反射的不2诀窍来调用具体的风云达成。

 

一.伍 越发注意

图片 15

 

壹.每走一步,验证一下创办镜像、云硬盘、互连网、虚拟机功效,防止不当积累导致重装

类加载模型

2、进行域服务器配置,点击运营Active Directory 域服务安装向导

2.修改的各个配置注意保留到git上:

  • 在BootstrapClassLoader里面注入Drill类作为通讯类;
  • Agent会接受命令,依照事件类型对InvocationHandler做字节码变形,注入到目的应用软件;
  • 在指标APP调用的时候,调用Drill.invoke(targetJavaClass,targetJavaMethod,
    targetThis,
    args)传递过来多少个参数(目的类、方法、实例、本西洋参数等);
  • Drill类通过反射的章程调用AppClassLoader里面包车型地铁现实事件实现,比如BEFORE事件的实践代码,来形成注入后的逻辑执行。

图片 16

Agent的完好架构

 

三.不明明的题材一定要以往虚拟机上印证

Agent的完整架构如图所示:

设置进程基本上是暗中认可

四.Horizon依旧先安装贰个

图片 17

图片 18

二基本条件

  • 支持分歧的模块的投入,比如Mock、流量录像、故障操练等;
  • 支撑QSSO的权位验证;
  • 支撑测试和虚伪环境的无资金接入;
  • 援救活动布署不必要人工参预;
  • 支撑各类故障命令的发表和实行、 超时 、非凡以及数额的回来;
  • 支撑格局级其他编制以及代码执行流程的编写制定;
  • 支撑在随机的Web容器执行Agent代理。

 

2.1yum还是rpm

肆、如何行使

 

yum源:

行使的利益是很肯定的:

图片 19

安插基本和系统不升级:

  • 零开销接入,无需申请别的财富;
  • 故障注入解除,无需重启服务;
  • 能够提供具有集群的拓扑结构。

 

/etc/yum.conf:

然则怎么才能科学利用啊?如下图所示:

 

keepcache=1

图片 20

此间建议采取新建域

exclude=kernel*

行使办法

图片 21

exclude=centos-release*

步骤一、输入AppCode;

 

去除原来的

步骤2、采纳故障方法;

根级域需求自定义,那里笔者定义为wangzx-noc.com

# rm yum.repos.d/ -rf

步骤3、钦点机器;

图片 22

轮换今后的

步骤四、注入故障。

 

然后更新源:

五、总结

 

# yum clean all

故障练习平台最中央的就是Agent组件——字节码编织框架,那几个框架是纯Java的基于Instrumentation-API的AOP化解方案。它能够方便研究开发职员对此字节码插桩拆桩操作,能够很简单的贯彻故障练习、流量摄像以及任何的选用模块。

图片 23

# yum makecache

作者:王鹏

 

# yum update –y

来源:Qunar技术沙龙订阅号(ID:QunarTL)

 

#yum upgrade –y

dbaplus社会群众体育欢迎广大技术人士投稿,投稿邮箱:editor@dbaplus.cn重临天涯论坛,查看愈来愈多

图片 24

坚决不能够执行yum update和yum upgrade

主要编辑:

 

继续创新:此处后续做成自动化脚本

 

设置方案:

图片 25

1.在虚拟机上使用yum安装一回all-in-one,把缓存的rpm包保存下来

 

二.实体机上行使rpm包安装,达成持续集成,持续集成究竟要做rpm包来安装,不及现在三次搞好,完成脚本化

 

[root@node1 etc]# vi yum.conf

图片 26

[main]

 

cachedir=/var/cache/yum

 

keepcache=1

安装文件的路线私下认可即可

(一)Ceph的使用yum 安装完全没难题

图片 27

(二)Openstack使用all-in-one先安装1个节点来检查环境

 

2.2/etc/hostname的设置

 

[root@localhost ~]# cat /etc/hostname

图片 28

node1

 

[root@localhost ~]# cat /etc/hostname

 

node2

 

[root@localhost ~]# cat /etc/hostname

图片 29

node3

 

[root@localhost ~]# cat /etc/hostname

 

node4

图片 30

此起彼伏立异:此处集成到自动化脚本

 

2.3 /etc/hosts设置

勾选以上选拔后,在安装实现后服务器将会活动重启,重启完结后使用域管理员账户登录。

[root@localhost ~]# vi /etc/hosts

三、将享有节点服务器以及存款和储蓄服务器均投入此域环境。(此处已壹台节点服务器为例)

127.0.0.1localhost localhost.localdomain localhost4
localhost4.localdomain4

右击这台微型总计机—>点击属性。

::1localhost localhost.localdomain localhost6 localhost6.localdomain6

图片 31

10.1.14.235mirrors.hikvision.com.cn

 

10.192.44.148 node1

图片 32

10.192.44.149 node2

 

10.192.44.150 node3

图片 33

10.192.44.151 node4

 

两次三番创新:此处集成到自动化脚本

图片 34

二.肆停歇防火墙

 

systemctl stop firewalld.service

修改形成后要求重启生效。重启服务器后使用域管理员账户登录。

systemctl disable firewalld.service

    注:添加域的节点服务器的DNS设置必须安装为域服务器的保管IP(17二.1陆.200.70)。所以在域服务器在装置剧中人物时记得安装DNS剧中人物服务。

二.伍 各样吩咐汇总

     

systemctl stop firewalld.service

     

systemctl disable firewalld.service

     

yum install ceph -y

     

yum install ceph-deploy -y

     

yum install yum-plugin-priorities -y

     

yum install snappy leveldb gdiskpython-argparse gperftools-libs -y

     

#ceph-deploy new lxp-node1 lxp-node2lxp-node3

     

# ceph-deploy install lxp-node1 lxp-node2lxp-node3

     

#ceph-deploy–overwrite-conf mon create-initial

     

ceph-deploy mon create lxp-node1 lxp-node2lxp-node3

     

ceph-deploy gatherkeys lxp-node1 lxp-node2lxp-node3

     

/etc/init.d/ceph-a start osd

     

systemctl enable haproxy

     

systemctl start haproxy

     

systemctl enable keepalived

     

systemctl start keepalived

四.二  iSCSI 虚拟存款和储蓄配置

# systemctl enable rabbitmq-server.service

1、打开服务器管理器,点击添加剧中人物和效果。

# systemctl start rabbitmq-server.service

图片 35

# rabbitmqctl add_user guest guest

 

chown rabbitmq:rabbitmq .erlang.cookie

 

rabbitmqctl stop_app

 

rabbitmqctljoin_cluster rabbit@lxp-node1

图片 36

rabbitmqctlstart_app

 

rabbitmqctl cluster_status

 

rabbitmqctl set_policy ha-all’^(?!amq\.).*’ ‘{“ha-mode”: “all”}’

 

yuminstall MySQL-python mariadb-galera-server galera xtrabackup socat

 

# systemctl enable mariadb.service

 

# systemctl restart mariadb.service

图片 37

yuminstall openstack-keystone httpd mod_wsgi python-openstackclient
memcachedpython-memcached

 

systemctlenable memcached.service

 

systemctlstart memcached.service

 

#yum install python-pip

 

#pip install eventlet

图片 38

mkdir-p /var/www/cgi-bin/

 

将node一的keystone打包过来解压

 

chown-R keystone:keystone /var/www/cgi-bin/keystone

 

chmod755 /var/www/cgi-bin/keystone/ -R

上面须要勾选需求安装的剧中人物。

重启httpd:

图片 39

# systemctlenable httpd.service

 

#systemctl start httpd.service

 

[root@lxp-node1~]# export OS_TOKEN=c5a16fa8158c4208b5764c00554bde49

效用如无别的须求,直接点击下一步。

[root@lxp-node1~]# export OS_URL=

图片 40

#systemctlenable openstack-glance-api.service
openstack-glance-registry.service

 

#systemctl start
openstack-glance-api.serviceopenstack-glance-registry.service

 

systemctlrestart openstack-glance-api.service
openstack-glance-registry.service

 

systemctlrestart openstack-glance-api.service
openstack-glance-registry.service

上面包车型大巴设置进度均暗许。

MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO
‘glance’@’localhost’ IDENTIFIED BY ‘6fbbf50542084b7c’;

图片 41

MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO ‘glance’@’%’
IDENTIFIED BY ‘6fbbf50542084b7c’;

 

MariaDB [(none)]> FLUSH PRIVILEGES;

 

ceph osd tree

图片 42

/etc/init.d/ceph-a start osd

 

# ceph-deploy –overwrite-conf osd
preparelxp-node1:/data/osd4.lxp-node1:/dev/sdb2lxp-node2:/data/osd5.lxp-node2:/dev/sdb2lxp-node3:/data/osd6.lxp-node3:/dev/sdb2

图片 43

# ceph-deploy –overwrite-conf osd
activatelxp-node1:/data/osd4.lxp-node1:/dev/sdb2lxp-node2:/data/osd5.lxp-node2:/dev/sdb2lxp-node3:/data/osd6.lxp-node3:/dev/sdb2

 

# ceph osd lspools

迄今截至iSCS剧中人物添加完成。

# ceph pg stat

 

ceph osd pool create image 32

 

# ceph osd lspools

二、新建虚拟磁盘。

yum installopenstack-dashboardhttpd mod_wsgi memcached pythonmemcached

   点击职分找到新建iSCSI虚拟磁盘,必要创制两块虚拟磁盘,一块磁盘做为仲裁磁盘,其它一块磁盘作为共享存款和储蓄磁盘。由于决策磁盘主要用来群集节点的裁决,无需太大空间。共享磁盘根据需求自动设置。

# systemctlrestarthttpd.service

图片 44

yuminstall openstack-nova-api openstack-nova-cert
openstack-nova-conductor openstack-nova-consoleopenstack-nova-novncproxy
penstack-nova-scheduler python-novaclient

 

# systemctl enable openstack-nova-api.service
openstack-nova-cert.service
openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service
openstack-nova-conductor.serviceopenstack-nova-novncproxy.service

    

# systemctl start openstack-nova-api.service
openstack-nova-cert.serviceopenstack-nova-consoleauth.service
openstack-nova-scheduler.serviceopenstack-nova-conductor.service
openstack-nova-novncproxy.service

 

GRANTALL PRIVILEGES ON nova.* TO ‘nova’@’localhost’ IDENTIFIED BY
‘b7cf13724ff948d7’;

    新建虚拟磁盘并精选仓库储存地点。

GRANTALL PRIVILEGES ON nova.* TO ‘nova’@’%’ IDENTIFIED BY
‘b7cf13724ff948d7’;