Peers

lvs+keepalived+nginx搭载高性能负载均衡

安稳与你 提交于 2020-08-18 05:33:59
1. 配置网络结构: 192.168.1.11和192.168.1.12是互为备份的LVS Director, 192.168.1.11默认为MASTER, 192.168.1.12为BACKUP 192.168.1.99是LVS Director的虚拟IP,当192.168.1.11正常工作时,它会通过VRRPv2协议向广播网段发送ARP数据包,声明192.168.1.99为其所有,当192.168.1.11宕机时,192.168.1.12会立即接管该工作,声明192.168.1.99的所有权并响应用户请求 192.168.1.13和192.168.1.14是 Real Server, 上面有监听在80端的Web 服务 2. Keepalived主机安装配置 1. 在192.168.1.11和192.168.1.12上安装keepalived, 安装完成后修改配置文件/etc/keepalived/keepalived.conf。 # yum install keepalived -y # vi /etc/keepalived/keepalived.conf 详细配置参数说明请参见官方文档: http://www.keepalived.org/doc/configuration_synopsis.html 2. 配置MASTER节点(192.168.1.11),配置文件内容如下

揭开 Raft 的神秘面纱,和ApacheRatis 了解Raft 组件的使用

扶醉桌前 提交于 2020-08-16 20:19:19
相比 Paxos, Raft 一直以来就是以易于理解著称。今天我们以一年 Raft 使用者的角度,来看一下,别人根据 Raft 论文实现了之后,我们一般要怎么样使用。 俗话说,要想知道梨子的味道,就要亲口尝一尝,没吃过猪肉,也要见一见猪跑。否则别人再怎么样形容,你可能还以为是像猫狗一类毛茸茸。 在 Raft 官网里长长的列表就能发现,实现 Raft 的框架目前不少。Java 里我大概看了蚂蚁的 SOFARaft 和 Apache 的 Ratis。这次我们以 Ratis 为例,揭开面纱,来看看到底要怎样使用。 当然,下面具体提到的例子,也是这些组件中自带的 example。 一、编译 github下载 Ratis 直接 mvn clean package 即可,如果编译过程中出错,可以先clean install ratis-proto 二、示例 Ratis 自带的示例有三个: arithmetic counter filestore 在 ratis-examples 模块中,对于 arithmetic 和 filestore比较方便,可以通过main/bin目录下的 shell 脚本快速启动 Server 和 Client 来进行测试。 对于Raft,咱们都知道是需要多实例组成集群才能测试,你启动一个实例没啥用,连选主都成问题。Bin 目录下的 start-all 支持

揭开 Raft 的神秘面纱,和ApacheRatis 了解Raft 组件的使用

人盡茶涼 提交于 2020-08-16 10:08:55
相比 Paxos, Raft 一直以来就是以易于理解著称。今天我们以一年 Raft 使用者的角度,来看一下,别人根据 Raft 论文实现了之后,我们一般要怎么样使用。 俗话说,要想知道梨子的味道,就要亲口尝一尝,没吃过猪肉,也要见一见猪跑。否则别人再怎么样形容,你可能还以为是像猫狗一类毛茸茸。 在 Raft 官网里长长的列表就能发现,实现 Raft 的框架目前不少。Java 里我大概看了蚂蚁的 SOFARaft 和 Apache 的 Ratis。这次我们以 Ratis 为例,揭开面纱,来看看到底要怎样使用。 当然,下面具体提到的例子,也是这些组件中自带的 example。 一、编译 github下载 Ratis 直接 mvn clean package 即可,如果编译过程中出错,可以先clean install ratis-proto 二、示例 Ratis 自带的示例有三个: arithmetic counter filestore 在 ratis-examples 模块中,对于 arithmetic 和 filestore比较方便,可以通过main/bin目录下的 shell 脚本快速启动 Server 和 Client 来进行测试。 对于Raft,咱们都知道是需要多实例组成集群才能测试,你启动一个实例没啥用,连选主都成问题。Bin 目录下的 start-all 支持

nacos集群遇到的坑

…衆ロ難τιáo~ 提交于 2020-08-12 15:01:51
记录下搭建nacos集群过程中遇到的坑:(集群机子代号这里列为:nacos-a,nacos-b,nacos-c) 1. 集群搭建,需要建立数据库 nacos_config(该数据库在nacos官网集群安装有提到,sql文件已经放到github了)。当 创建nacos_config数据库的 nacos-a 启动正常, nacos-b 和 nacos-c 启动失败 。 可能是 nacos-b 和 nacos-c 无法远程连接 nacos-a 的数据库,导致启动失败。这时候需要开启 nacos-b 和 nacos-c 访问 nacos-a 的权限即可。 ========​​​​​​​========​​​​​​​========​​​​​​​========>>>>>>>> 2. 启动nacos集群(通过集群命令启动的 sh startup.sh),start.out日志文件提示启动成功,访问三台nacos也成功,服务也能注册上去,配置文件也能共享,但是查看 "集群管理 - 节点列表",却发现没有显示集群的三台机器的信息。 可以断定,集群是没跑起来。只是单纯的单机运行。配置文件之所以能共享,是因为公用了同一个数据库。后来去查看了下 nacos.log 日志。发现启动之后一直报一个错误: unable to find local peer: 122.123.68.456:8848, all

对标Eureka的AP一致性,Nacos如何实现Raft算法

天大地大妈咪最大 提交于 2020-08-11 05:52:20
一、快速了解Raft算法 Raft 适用于一个管理日志一致性的协议,相比于 Paxos 协议 Raft 更易于理解和去实现它。 为了提高理解性,Raft 将一致性算法分为了几个部分,包括领导选取(leader selection)、日志复制(log replication)、安全(safety),并且使用了更强的一致性来减少了必须需要考虑的状态。 相比Paxos,Raft算法理解起来更加直观。 Raft算法将Server划分为3种状态,或者也可以称作角色: Leader 负责Client交互和log复制,同一时刻系统中最多存在1个。 Follower 被动响应请求RPC,从不主动发起请求RPC。 Candidate 一种临时的角色,只存在于leader的选举阶段,某个节点想要变成leader,那么就发起投票请求,同时自己变成candidate。如果选举成功,则变为candidate,否则退回为follower 状态或者说角色的流转如下: 在Raft中,问题分解为:领导选取、日志复制、安全和成员变化。 复制状态机通过复制日志来实现: 日志:每台机器保存一份日志,日志来自于客户端的请求,包含一系列的命令 状态机:状态机会按顺序执行这些命令 一致性模型:分布式环境下,保证多机的日志是一致的,这样回放到状态机中的状态是一致的 Raft算法选主流程 Raft中有Term的概念

聊聊kingbus的startRaftPeer

孤者浪人 提交于 2020-08-10 21:07:15
序 本文主要研究一下kingbus的startRaftPeer startRaftPeer kingbus/server/server.go func (s *KingbusServer) startRaftPeer(peerURLs types.URLs) error { err := s.raftNode.NewPeerListener(peerURLs) if err != nil { return err } s.raftNode.SetPeerHandler() s.raftNode.PeerHandlerServe() log.Log.Infof("startRaftPeer success") return nil } startRaftPeer方法根据peerURLs通过s.raftNode.NewPeerListener开启listener,之后执行s.raftNode.SetPeerHandler()、s.raftNode.PeerHandlerServe() NewPeerListener kingbus/raft/peer_handler.go //NewPeerListener create listener of peer func (r *Node) NewPeerListener(peerURLs types.URLs) (err error) {

SD-WAN 本地策略与中心策略配置(三)

China☆狼群 提交于 2020-08-10 06:22:27
[TOC] 1. Localized Policy配置 重点说明 :Localized Policy是直接推送策略到vEdge。 创建入口: Configuration -> Policies -> Custom Options -> Localized Policy ->CLI Policy,Add Policy: <img src="https://raw.githubusercontent.com/singvis/upload_image/master/img/%E6%9C%AC%E5%9C%B0%E7%AD%96%E7%95%A501.png"> 添加策略,定义策略名称和描述: <img src="https://raw.githubusercontent.com/singvis/upload_image/master/img/%E6%9C%AC%E5%9C%B0%E7%AD%96%E7%95%A502.png"> #配置命令 policy app-visibility flow-visibility 策略关联到模板:Configuration->Templates->Edit: <img src="https://raw.githubusercontent.com/singvis/upload_image/master/img/%E6%9C%AC%E5%9C%B0%E7

最近华为HCIE经常追问的一道题目解析

眉间皱痕 提交于 2020-08-07 21:45:44
BGP Connection Collision Detection(RFC4271) If a pair of BGP speakers try to establish a BGP connection with each other simultaneously, then two parallel connections well be formed. If the source IP address used by one of these connections is the same as the destination IP address used by the other, and the destination IP address used by the first connection is the same as the source IP address used by the other, connection collision has occurred. In the event of connection collision, one of the connections MUST be closed. Based on the value of the BGP Identifier, a convention is established

聊聊kingbus的starRaft

浪子不回头ぞ 提交于 2020-08-06 06:50:48
序 本文主要研究一下kingbus的starRaft starRaft kingbus/server/server.go func (s *KingbusServer) starRaft(cfg config.RaftNodeConfig) error { var ( etcdRaftNode etcdraft.Node id types.ID cl *membership.RaftCluster remotes []*membership.Member appliedIndex uint64 ) prt, err := rafthttp.NewRoundTripper(transport.TLSInfo{}, DialTimeout) if err != nil { return err } store, err := storage.NewDiskStorage(cfg.DataDir, cfg.ReserveDataSize) if err != nil { log.Log.Fatalf("NewKingbusServer:NewDiskStorage error,err:%s,dir:%s", err.Error(), cfg.DataDir) } //store, err := storage.NewMemoryStorage(cfg.DataDir) //if err

Hyperledger Fabric V2.0(三)手动搭建Fabric网络(first-network)

只愿长相守 提交于 2020-05-02 18:14:15
本文已更新,请移步 Hyperledger Fabric(五)手动搭建Fabric网络V2.0(基于first-network案例) 基于byfn.sh脚本文件的自动化部署过程如下: ① 进入fabric-samples/first-network目录 cd fabric-samples/first-network ② 为各种网络实体生成所需的证书及密钥,引导排序服务的genesis块,配置通道所需的配置事务,以及锚节点更新事务 ./byfn.sh generate #可通过如 -c alwayschannel 指定通道名称,默认为mychannel ③ 启动网络,创建通道,安装、定义并调用链码 byfn.sh up #用默认值启动网络,可通过-c mychannel指定通道名称,-s couchdb指定使用couchdb而不是leveldb,指定参数-n以不安装abstore智能合约(该脚本默认安装该合约),-l java指定安装脚本的语言为java ④ 销毁网络 ./byfn.sh down #停止并删除所有容器,删除chaincode镜像,删除证书及密钥(crypto-config目录下),以及四个通道文件(channel-artifacts目录下,分别为:genesis.block,channel.tx,Org1MSPanchors.tx,Org2MSPanchors.tx