怎样提高系统的可用性?

App的服务器,目前用的是微软的Azure,产品马上要上线了,想提高服务端的可用性。目前的配置如下
硬件:两台主机,一台Django应用程序服务器,一台数据库服务器
软件:负载均衡用的Nginx,消息队列RabbitMQ+Celery,它们与Django应用程序服务器共用一台主机

提高系统可用性,我能想到的是使用集群。
目前的想法是,增加两台主机,一台放Nginx和MQ,另一台用做应用程序服务器,这样在一定程序上提高应用程序服务器的可用性。后台代码更新时,可以先更新一台应用程序服务器,成功后,再更新另一台,这样更新过程中不会中断服务。对于数据库,做主备,主备数据库应该放在不同的主机上吗?另外,除了这些,提高系统的可用性还有哪些措施呢?

阅读 7.8k
2 个回答

一般思路如下:
1. 是否可以水平扩展, 可以创建集群. 如web的 基本都是无状态的 可以水平扩容搞个nginx就可以实现集群(其它的lvs haproxy都可以考虑).
2. 是否有接入单点, 可以考虑心跳与轮询的方式. 如lvs haproxy 之间可以做心跳检测,自动容灾.简单点的DNS轮询 ,zookeep等.
3. 是否有数据单点, 可以采用开源的一些解决方案,最简单的就是保证数据安全,多份部署,冷备.

现在设计服务都要考虑分布式的一个需求,之后迁移云平台都是非常简单的.

简单的说就是冗余

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进