如何水平扩展亚马逊RDS实例?使用EC2、负载均衡器和自动缩放非常容易实现,但如果我想扩展亚马逊RDS呢? 我可以使用更强大的实例升级我的RDS实例,或者我可以创建一个读副本并将SELECT查询指向它。 但是,如果我拥有一个面向读取的Web应用程序,则在此模式下我不会扩展任何内容。那么,我可以创建具有自动缩放和负载平衡器的RDS读副本吗?
你可以使用HAProxy来负载均衡Amazon RDS读副本。请查看此链接以获取更多信息:http://harish11g.blogspot.ro/2013/08/Load-balancing-Amazon-RDS-MySQL-read-replica-slaves-using-HAProxy.html。希望这有所帮助。
注意,RDS涵盖了几种数据库引擎- mysql、postgresql、Oracle和MSSQL。一般来说,您可以通过扩展实例规模(使用更大的实例)、使用只读数据库或分片来进行扩展。如果您正在使用mysql,请考虑使用AWS Aurora。考虑最佳地使用数据库- 也许与memcached或Redis(两者都在AWS Elasticache下可用)结合使用。考虑使用搜索引擎(lucene、elasticsearch、cloudsearch)。一些常规资源: http://highscalability.com/ https://gigaom.com/2011/12/06/facebook-shares-some-secrets-on-making-mysql-scale/
如果您正在使用PostgreSQL并且有一个可以按特定键分区且不需要复杂事务的工作负载,那么您可以查看pg_shard扩展。pg_shard允许您创建分布式表,这些表在多个服务器上进行分片。对分布式表的查询将被透明地路由到正确的分片。尽管RDS没有安装pg_shard扩展,但您可以在EC2上设置一个或多个带有pg_shard扩展的PostgreSQL服务器,并使用RDS节点作为工作节点。pg_shard节点只需要存储少量元数据,可以在其中一个工作节点中备份,因此它们的维护成本相对较低,可以扩展以适应更高的查询速率。提供了一篇指南,其中包含链接到CloudFormation模板,可自动设置所有内容:https://www.citusdata.com/blog/14-marco/178-scaling-out-postgresql-on-amazon-rds-using-masterless-pg-shard