【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 正文

在用Python做通信时遇到服务器与服务器之间通信时遇到如下问题

放大字体  缩小字体 发布日期:2020-10-23 09:04:56    浏览次数:7
导读

  这篇文章 旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。  注意!虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭。同时需要注意的是并不推荐在集群启动完成后关闭作为管理节点

  这篇文章 旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。

  注意!虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭。同时需要注意的是并不推荐在集群启动完成后关闭作为管理节点的服务器。尽管理论上可以建立基于只有2台服务器的MySQL集群,但是这样的架构,一旦一台服务器宕机之后集群就无法继续正常工作了,这样也就失去了集群的意义了。出于这个原因,就需要有第三台服务器作为管理节点运行。另外,可能很多朋友都没有3台服务器的实际环境,可以考虑在VMWare或其他虚拟机中进行实验。

  Servers1和Server2作为实际配置MySQL集群的服务器。对于作为管理节点的Server3则要求较低,只需对Server3的系统进行很小的调整并且无需安装MySQL,Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其他服务。二、在Server1和Server2上安装MySQL

  # ndb_mgmd启动管理节点后应该注意,这只是管理节点服务,并不是管理终端。因而你看不到任何关于启动后的输出信息。四、配置集群服务器并启动MySQL

  # /usr/bin/ndb_mgm键入show命令查看当前工作状态:(下面是一个状态输出示例)

  如果上面没有问题,现在开始测试  MySQL:注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。在Server1中:

   SELECt * FROM ctest;应该可以看到1 row returned信息(返回数值1)。如果上述正常,则换到Server2上重复上面的测试,观察效果。如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。如果都没有问题,那么恭喜成功!六、破坏性测试

  ==============将Server1或Server2的网线拔掉,观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。如果你接触不到物理服务器,也就是说不能拔掉网线,那也可以这样测试:在Server1或Server2上:

  # kill -9 5578 5579之后在另一台集群服务器上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。测试完成后,只需要重新启动被破坏服务器的ndbd进程即可:

  # ndbd注意!前面说过了,此时是不用加--inital参数的!至此,MySQL集群就配置完成了!

  负载均衡是一种技术,从字面意义上理解,就是让负载(变得)均衡,负载是什么呢?可以理解为工作量、工作强度。用日常生活中的例子来打比方,一群建筑工人,盖一幢楼房,有搬砖的,有和水泥的,有砌墙的,有刷油漆的,同时每个工人的劳动能力还各有差别,如果让这些工作自组织的干起活来,可能有的人忙到累死,而有的人闲的无聊 ,因此不论大小工地上,都会存在监工、项目经理、包工头等这样的角色,他们会统观全局,识别每个工人的工作强度,合理分配任务,保证建筑活动的正常开展,很大程度上起到了的负载均衡的作用, 这就是负载均衡在生活中的例子。

  阿里云负载均(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。

  可见云计算中的负载均衡除了通过流量分发让后端的服务器负载均衡,还有两个重要的用途,一就是消除单点故障,因为一般负载均衡后端挂载有多台ecs服务器,当某一台不工作时,系统的可用性不会受到影响;二是可以扩展应用系统的处理能力。

  首先我们购买两台云服务器,这里我们选择华北2(北京)区域,购买两台按量付费的云服务器,云服务器的处理能力不重要,选择最低配够演示需求即可,购买参数如下:

  我们首先登录两台ECS进行简单配置,配置的主要目的就是给云服务器安装WebServer使其变成一台WEB服务器,步骤如下:

  1、通过ssh登录到ecs云服务器,注意这里需要使用云服务器的公网ip,在控制台中输入命令行:ssh .xxx.xxx,回车后并输入在购买时设置的SSH远程管理密码即可登录。第一次登录时会有个提示,选择yes即可

  2、安装webserver,这里我使用的是Ubuntu Server的发行版,因此我们可以很方便的使用apt-get工具来完成webserver的安装,在控制台输入如下命令(注意,接下来的操作要确定是在ECS的shell中完成,而不是您本地的shell中):

  同理我们对两台云服务器都做上述同样的配置操作,只是在最后一步配置index.html主页时,我们配置一个不同的主页面,便于演示:

  至此,云服务器ECS就准备好了,下面我们来购买一台负载均衡,同样我们要在华北2(北京)区域购买,负载均衡和后端服务器ECS必须保持在同一可用区。

  1、创建监听:这个目的是未了让SLB在某个指定端口上监听客户请求,并且配置健康检查等相关参数设置

  创建好监听后,我们点击后端服务器菜单项,切换未添加的服务器tab页,勾选列表中的2台云服务器(就是之前在华北2区域购买的2台云服务器),然后点批量添加

  1、不经过负载均衡,直接访问ECS1服务器,在流量器输入地址可以发现当前是访问不到的,因为之前我们购买ECS时没有勾选开放80端口,因此通过公网进来的80端口请求ECS不会响应

  不断刷新网页,可以看到一会页面返回的是“Hello World ! This is ECS01.”,一会返回的是“Hello World ! This is ECS02.”,这就说明负载均衡已经在正常工作了,来自用户的请求,被轮询的发往另外不同的ECS进行处理,并且返回了不同的结果。

  之前在一台主机上搭建好了一个集群环境(192.168.187.226)就是基本的7000、7001、7002、7003、7004、7005,现在 想在192.168.187.227上部署一个redis服务器port:7006添加进之前搭好的集群。其实后来我测试功能及其储存方式,主从关系等是在三台主机上玩的。这里以完全新手的角度介绍集群的基本安装流程和遇到的问题和如何在多台主机上搭建环境。

  如下是另一台主机(192.168.187.226)的redis服务器运行状态(之前已经配好了)

  10,以上问题都解决后,命令正常执行但是会出现连接不上127.0.0.1:7006的情况(因为是两台主机,绑定本地到本地的ip当然不行啦)

  总结:其实在一台主机上完成搭建集群之后,在多台主机上搭建集群的思路就基本明白了。无非是把redis服务器的ip绑定为对应主机的IP,不这样怎么可能connect上呢。测试信息总结在下一篇博客里。

  在做服务器集群时,集群中的服务器需要通信,比如Client1(简称C1)连接到Server1(简称S1),Client2连接到Server2,Client1需要向Client2发消息,S1并不知道C2已连接到S2。

  A方案:采用组播(或广播),S1在接收到C1消息后,发送广播包查询C2位于哪个Server上,这时S2向S1回复,S1再将消息发送到S2,S2转发给C2,但是udp是不可靠的,虽然Server都位于同一局域网内,如果消息丢了,那C2就接收不到C1的消息了。

  B方案:增加一个路由服务器,所有Server都连接到路由服务器(tcp长连接),S1将消息转发给路由服务器,路由服务器再广播给所有Server,由各个Server自行判断,但这样程序复杂度就上升了,每个Server都会处理本来不属于自己处理的消息,而且路由服务器会成为瓶颈,消息数量大规模增加的话。

  这不就是个消息队列嘛,简单的可以用zeromq做,稍微复杂一点可以用rabbitmq/activemq/qpid等等各种成熟方案。

  MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ等等。

  AMQP是一种用于业务消息的开放网络协议。他定义了一种允许双方进行可靠业务消息传递的二进制线级协议。该协议的目标是成为所有消息中间件之间进行互操作的标准协议。

  Qpid则是由Apache开发的一种消息队列,实现了AMQP协议,并且支持多种语言与多种平台。

  这是个类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信,node可以是主机或者是进程。

  引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”

  这不就是个消息队列嘛,简单的可以用zeromq做,稍微复杂一点可以用rabbitmq/activemq/qpid等等各种成熟方案

  我看了下zeromq资料,它是用的tcp,通过一个路由服务器来转发(发布-订阅,请求-应答等等)。我的问题这种转发服务器会是一个瓶颈额,比如设计目标并发量10万,即每秒10万条消息,要求所有消息1秒内处理完,他能即时处理?

  看消息大小,0mq官网有测试数据,8字节的消息每秒可以吞吐280万条(10G网络)或者400万条(infiniband),100字节的消息每秒都在100万条以上,每秒10万并不是一个特别巨大的量。想要性能可以堆机器,分布式消息队列很成熟了。

  吞吐能力是接收和发送的总和?还是单单是接收?其实我想知道它的分发能力,比如说有10个服务器向它订阅了消息,那1秒它能同时分发给这10台服务器的消息量有多大?

  官网有很具体的报告可以参考,建议自己搭环境实际测试,在普通PC和千兆网卡的环境里,是不可能有官方测出来的那个成绩的

  在分布式调度系统中,如果要实现调度服务器与多台计算节点服务器之间通信,采用socket来实现是一种实现方式,当然我们也可以通过数据存储任务,子节点来完成任务,但是往往使用数据作为任务存储都需要定制开发,要维护数据库中任务记录状态等等。开发的东西还是有点多,而且还不够灵活。因此,我个人是比较偏向于使用socket来实现任务的调度工作。原因:使用socket实现调度比较灵活,而且扩展性都比较好。

  实现思路:调度服务器要实现调度工作,它必须与所有计算节点之间建立连接。而且他需要知道每台计算节点的任务状况,因此服务器节点必须存储与所有计算节点的socket连接对象。

  在客户端唯一需要知道的就是它归属的调度服务器的通信IP和端口,因此client是发送连接的主动方,由调度服务器监听是否有client请求建立连接,当建立连接成功后,把该连接信息存储到一个结合中以便监控client的存货状态及通信使用。

  由于server端是存储了所有server与client的连接对象,因此我们是可以基于此demo的基础上实现聊天系统:

  * 每当一个与用户发言时,是由server接收到的某个用户的发言信息的,此时服务器端可以通过循环发送该用户发送的信息给每个已经连接连接的用户(排除发送者)。

  的集群方案 --------------------------------------------------------------------------------

  系统中,服务器不再分布在各处,而是集中在一起统一进行管理和维护。它保持了分布式客户机/...

  之后,假如原来十个用户访问一台服务器,现在平均开,五个人访问上面的服务器,五个人访问另一个服务器。 用户的体验就会稍微好一点。 好处...

  ,根域名nwdc.dc NWAPP1 10.5.10.124 10.5.10.117 ...

  变成几台甚至上百台(很少见啊)相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,众多虚拟...

  时候,只要根据提示下一步下一步都能完成。 最近帮测试部部署一个简单的双物理机weblogic

  )构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力。

  包括三部分组成:前端服务器,后天服务器,同步数据库。前端服务器最长用的是nginx和LVS,nginx是基于应用层的集群服务器,而LVS是基于tcp协议一下的第四...

  模拟六个节点,一台服务器一个master,两个salve。 redis版本:4.0.1。 两个服务器都是centos7.3系统。 关于redis的安装不再赘述,默认

 
关键词: 服务器集群
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://www.31duo.com/news/show-671386.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4