ホームページ >システムチュートリアル >Linux >Redis の高可用性の実践
Redis ialah pangkalan data Nilai Kunci jenis log sumber terbuka yang ditulis dalam bahasa ANSI C, menyokong rangkaian, boleh berasaskan memori dan berterusan serta menyediakan API dalam berbilang bahasa.
Kini, data perniagaan Internet berkembang pada kadar yang lebih pantas, dan jenis data menjadi semakin banyak, yang mengemukakan keperluan yang lebih tinggi untuk kelajuan dan keupayaan pemprosesan data. Redis ialah pangkalan data bukan perkaitan dalam ingatan sumber terbuka yang membawa pengalaman yang mengganggu kepada pembangun. Direka dari awal hingga akhir dengan mengambil kira prestasi tinggi, Redis ialah pangkalan data NoSQL terpantas yang tersedia hari ini.
Semasa mempertimbangkan prestasi tinggi, ketersediaan tinggi juga merupakan pertimbangan yang sangat penting. Internet menyediakan perkhidmatan tanpa gangguan 7×24 dan Failover pada kelajuan terpantas semasa kegagalan, yang boleh membawa kerugian minimum kepada perusahaan.
Jadi, apakah seni bina ketersediaan tinggi yang terdapat dalam aplikasi praktikal? Apakah kebaikan dan keburukan antara seni bina? Bagaimana kita harus memilih? Apakah beberapa amalan terbaik?
Sebelum menerangkan penyelesaian ketersediaan tinggi Redis, mari kita lihat terlebih dahulu prinsip Redis Sentinel.
1 hingga 3 ialah mekanisme penemuan automatik:
4 ialah mekanisme pengesanan, 5 dan 6 ialah mekanisme failover, dan 7 ialah mekanisme konfigurasi kemas kini. [1]
After explaining the principle of Redis Sentinel, let’s explain the commonly used Redis high-availability architecture.
The following will be explained one by one with pictures and text.
The picture above is a solution that has been applied in an online environment. The bottom layer is the Redis Sentinel cluster, which acts as an agent for the Redis master and slave. The Web side connects to the intranet DNS to provide services. Intranet DNS is allocated according to certain rules, such as xxxx.redis.cache/queue.port.xxx.xxx. The first segment indicates the business abbreviation, the second segment indicates that this is the Redis intranet domain name, and the third segment Represents the Redis type, cache represents the cache, queue represents the queue, the fourth segment represents the Redis port, and the fifth and sixth segments represent the main domain name of the intranet.
When the master node fails, such as machine failure, Redis node failure, or network unreachability, the Sentinel cluster will call the client-reconfig-script configured script to modify the intranet domain name of the corresponding port. The intranet domain name of the corresponding port points to the new Redis master node.
Advantages:
Disadvantages:
This plan is slightly different from the previous one. The first solution uses the intranet DNS, and the second solution replaces the intranet DNS with a virtual IP. The bottom layer is the Redis Sentinel cluster, which acts as an agent for Redis master and slave, and the Web side provides services through VIP. When deploying Redis master-slave, you need to bind the virtual IP to the current Redis master node. When the master node fails, such as machine failure, Redis node failure, or network unreachability, the Sentinel cluster will call the script configured by client-reconfig-script to float the VIP to the new master node.
Advantages:
Disadvantages:
一部の企業は外部ネットワーク経由でのみ Redis にアクセスできるため、上記の 2 つのソリューションのどちらも利用できないため、このソリューションが派生しました。 Web は、クライアントを使用して Redis Sentinel クラスターのいずれかにあるマシンの特定のポートに接続し、このポートを通じて現在のマスター ノードを取得し、実際の Redis マスター ノードに接続して、対応するセールスマン操作を実行します。 Redis Sentinel ポートと Redis マスター ノードの両方にオープン アクセスが必要であることに注意することが重要です。フロントエンド ビジネスが Java を使用している場合は、JedisSentinelPool を再利用できます。フロントエンド ビジネスが PHP を使用している場合は、phpredis に基づいて二次カプセル化を実行できます。
利点:
デメリット:
最下層は Redis Sentinel クラスターで、Redis マスターとスレーブのエージェントとして機能し、Web 側は VIP を通じてサービスを提供します。マシン障害、Redis ノード障害、ネットワーク到達不能など、マスター ノードに障害が発生した場合、Redis 間の切り替えは Redis Sentinel の内部メカニズムによって保証され、VIP 切り替えは Keepalived によって保証されます。
利点:
デメリット:
このソリューションは Redis Sentinel を使用しません。このソリューションでは、ネイティブのマスター/スレーブと Keepalived を使用し、Redis のマスター/スレーブ間の切り替えにはカスタム スクリプトが必要です。
利点:
デメリット:
出典: http://intro2libsys.com/focused-redis-topics/day-one/intro-redis-cluster
Redis 3.0.0 は、2 年以上前の 2015 年 4 月 2 日に正式にリリースされました。 Redis クラスターは P2P モードを採用しており、非集中型です。キーを 16384 個のスロットに分割し、各インスタンスがスロットの一部を担当します。クライアントが対応するデータを要求した場合、インスタンス スロットに対応するデータが存在しない場合、インスタンスは対応するインスタンスに転送されます。さらに、Redis クラスターは、Gossip プロトコルを通じてノード情報を同期します。
利点:
デメリット:
From: http://engineering.bloomreach.com/the-evolution-of-fault-tolerant-redis-cluster
Multiple isomorphic Twemproxy (same configuration) works at the same time, accepts client requests, and forwards them to the corresponding Redis according to the hash algorithm.
Twemproxy solution is relatively mature. Our team has used this solution for a long time, but the effect is not very satisfactory. On the one hand, the positioning problem is more difficult, and on the other hand, its support for automatically eliminating nodes is not very friendly.
Advantages:
Disadvantages:
From: https://github.com/CodisLabs/codis
Codis is an open source product by Wandoujia and involves many components. Among them, ZooKeeper stores routing tables and proxy node metadata, and distributes Codis-Config commands; Codis-Config is an integrated management tool with a Web interface for use; Codis-Proxy is A stateless proxy compatible with the Redis protocol; Codis-Redis is a secondary development based on Redis 2.8 version, adding slot support to facilitate data migration.
Advantages:
Disadvantages:
The so-called best practices are practices that are most suitable for specific scenarios.
We mainly recommend the following plans:
The following are the best practices summarized during actual combat:
This event shared the necessity of Redis high availability, the Sentinel principle, the common architecture of Redis high availability and the best practices summarized in the actual combat process. I hope it will be helpful to readers. If you need follow-up communication, you can add me WeChat (Wentasy), or send an email to: dbarobinwen@gmail.com
Attached PPT download: https://github.com/dbarobin/slides
Video Playback: Best Practices for Redis High Availability Architecture
Thank you to Tingyun and Operation and Maintenance Gang for their careful organization, and thank you to everyone who came to participate in this event despite the heavy rain. This sharing was videotaped by the IT guru, and I would like to thank the IT guru for his technical support.
[1] jyzhou (2016-06-12). Redis replication, Sentinel construction and principle explanation. Retrieved from http://www.cnblogs.com/zhoujinyi/p/5570024.html.
以上がRedis の高可用性の実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。