Zookeeper 3.9.4部署
演示一些常用的场景
演示一些常用的场景
Zookeeper Atomic Broadcast protocol是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。基于该协议,Zookeeper实现了一种主备模式的系统架构来保持集群中各个副本的数据一致性。
本文作者叫Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员。他是Apache Axis2项目的联合创始人,也是Apache Software基金会的成员。他是WSO2流处理器(wso2.com/analytics)的联席架构师。Srinath撰写了两本关于MapReduce和许多技术文章的书。他获得了博士学位。来自美国印第安纳大学。
Srinath 通过不懈的努力最终总结出了30条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构师团队或部门。Srinath 认为架构师应该扮演的角色是一个引导者,讨论发起者,花草修建者,而不是定义者和构建者。Srinath为了解决团队内部的架构纷争和抉择,制定了以下30条原则,这些原则被成员们广泛认可,也成为了新手架构师的学习途径。
ICMP(Internet Control Message Protocol)互联网控制报文协议,和IP协议一样属于网络层。最常见的用途就是用来测试网络节点的可达性,源主机封装一个Icmp消息,发往目的主机,目的主机根据情况选择回复或者不回复,源主机依据回复判断网络通不通,如果途径的路由节点发现目的主机不可达,可能会在Icmp的回复中带上具体的原因,这些错误原因有助于故障诊断和排除。
除了判断网络不通,Icmp也能通过重定向消息,反馈源主机一些信息,比如更优的网络路径,或者消息发太快了,源主机可以选择进行处理或者不处理。
报文格式
| Type | Code | 描述 | |
|---|---|---|---|
| 查询报文 | 0 | 0 | Echo Reply |
| 差错报文 | 3 | 0 | Network Unreachable |
| 差错报文 | 3 | 1 | Host Unreachable |
| 差错报文 | 3 | 2 | Protocol Unreachable |
| 差错报文 | 3 | 3 | Port Unreachable |
| 差错报文 | 3 | 4 | Fragmentation Needed and DF Set 需要分片,但设置了不分片标志 |
| 差错报文 | 3 | 5 | Source Route Failed |
| 差错报文 | 4 | 0 | Source Quench 源抑制 |
| 差错报文 | 5 | 0 | Redirect for the Network |
| 差错报文 | 5 | 1 | Redirect for the Host |
| 差错报文 | 5 | 2 | Redirect for the Type of Service and Network |
| 差错报文 | 5 | 3 | Redirect for the Type of Service and Host |
| 查询报文 | 8 | 0 | Echo Request |
| 差错报文 | 11 | 0 | Time to live Exceeded in Transit 传输超时 |
| 差错报文 | 11 | 1 | Fragment Reassembly Time Exceeded 分片重组超时 |
| 差错报文 | 12 | 0 | Parameter Problem |
| 查询报文 | 13 | 0 | Timestamp Request |
| 查询报文 | 14 | 0 | Timestamp Reply |
| 查询报文 | 15 | 0 | Information Request |
| 查询报文 | 16 | 0 | Information Reply |
Ping的作用是用来判断目标机器是否可达,它是一个应用层命令,依赖的网络层的ICMP协议,而ICMP也是利用IP协议进行消息传输的
如果与TCP发消息对比可以如下图所示
所以ICMP在传输的过程中,从外部看来就是一个IP数据包,只有解析了IP报头,取出里面的数据,才能获取ICMP的报头信息。在ICMP报文中也可能存放着请求报文报头信息,比如A给C发消息经过B,结果B发现C不可达,于是就给A回了一个ICMP消息,这个消息的IP报头中放的就是B和A的IP信息,而ICMP消息中放的就是A和C的IP信息。
参考:
现在的家用路由器一般都已经集成了NAT路由、交换机和WFI接入等功能,可简单如图所示
一般可以直接登录网关http://192.168.1 进行配置查询和修改
如果IP属于当前子网,但是不存在,那么连接会卡在ARP流程,找不到目标主机,无法拼凑MAC报头,也就发不出SYN数据包。至于一直重试ARP,是由于TCP本身的可靠性机制
1 | tcpdump: data link type PKTAP |
如果IP不属于当前子网,那么能发出第一次SYN,从网关出去,但是会一直失败,直到放弃
1 | tcpdump: data link type PKTAP |
如果端口不存在,对方收到连接数据包会返回RST,强制关闭连接,提示Connection refused
1 | tcpdump: data link type PKTAP |
不一定总会收到RST回应,对于线上生产环境的服务器,一般都会设置防火墙,只开放指定的端口,如果访问未开放的端口,消息会直接被拒绝,根本到不了目标机器的协议栈,也就不会回复RST了
参考:
总结一下为什么需要NAT网络,以及NAT网络的原理和作用