Pagekit CMSyi CentOS 7ye Yükleme
Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size
RabbitMQ, AMQP, STOMP ve diğer iletişim teknolojilerini destekleyen açık kaynaklı bir mesaj aracısıdır. Farklı mikro hizmetler arasında zaman uyumsuz bir mesaj kanalı olarak hareket ettiği kurumsal uygulamalarda ve modern mikro hizmet mimarilerinde yaygın olarak kullanılmaktadır. Bu kılavuzda, yüksek kullanılabilirlikli bir ileti aracısı oluşturmak için RabbitMQ'yu birden çok CentOS 7 sunucusunda nasıl kümeleyebileceğiniz açıklanacaktır. Bu öğreticide, bir sunucu ana sunucu olarak görev yapacak ve diğer sunucular ana sunucunun kullanılamaması durumunda ayna sunucu olarak işlev görecektir.
CentOS güvenlik duvarı ( firewalld
) varsayılan olarak gelen trafiğe izin vermez. RabbitMQ'yu ağ içindeki ve dışındaki diğer sistemler için kullanılabilir hale getirmek ve yönetim konsoluna erişmemize izin vermek için, önce bazı bağlantı noktalarını açmamız gerekir.
RabbitMQ'nun web arayüzü yönetim konsolu, bağlantı noktasında varsayılan olarak dinler 15672
. Yönetim konsolunu bilgisayarımızdan erişebilmemiz için herkese açık hale getirmek istiyoruz. Bu nedenle , ortak bölgede (bir Vultr örneğinde varsayılan ve etkin bölge olan) firewalld
bağlantı noktasını kalıcı olarak açmayı 15672
söyleyeceğiz.
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
RabbitMQ düğümlerinin birbirleriyle iletişim kurabilmesi gerekir. Gerekli portları açmak istiyoruz, ancak sadece dahili ağ üzerinden. İnternet'teki hiç kimsenin sunucularımızı yönetmesini veya doğrudan sunucularımızla iletişim kurmasını istemiyoruz. Aşağıdaki komutlar, sunucularımızın 192.168.0.100/24
alt ağda olduğunu varsayar .
İlk hizmet, epmd
bağlantı noktasında varsayılan olarak dinleyen eş bulma hizmetidir 4369
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="4369" accept'
Internode ve CLI iletişimi için RabbitMQ'nun port üzerinden iletişim kurabilmesi gerekir 25672
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="25672" accept'
CLI araçları, port aralığı üzerinden iletişim kurar 35672-35682
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="35672-35682" accept'
Uygulamalarınızın AMQP protokolüne ihtiyacı varsa, bağlantı noktalarını 5671
ve 5672
. Başka bir protokol üzerinden iletişim kurabilmeniz gerekirse, RabbitMQ'nun ağ gereksinimleri hakkında gerekli bilgileri resmi RabbitMQ belgelerinde bulabilirsiniz .
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="5672" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="5671" accept'
Şimdi firewalld
yapılandırıldı, yapılandırmayı yeniden yüklemesi talimatını vermeliyiz.
sudo firewall-cmd --reload
Bu bölümdeki adımları tüm sunucularda tekrarlayın.
rabbitmqadmin
Yönetim eklentisi rabbitmqadmin
, yönetim eklentisi etkinleştirildikten sonra sisteme kolayca kurulabilen bir Python aracı ile birlikte gelir .
sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin
Kümeleme sırasında sunucuları tanımlamak için sunucunun ana bilgisayar adlarını kullanmanız gerekir. Varsayılan olarak, sunuculara atanmış DNS kaydı yoktur ve bağlantı başarısız olur. Bunu hızlı bir şekilde aşmak için, /etc/hosts
favori düzenleyicinizi kullanarak ana ve ayna ana bilgisayar adını dosyaya ekleyin.
Örneğin, master'ınızın hosts dosyası aşağıdaki gibi görünebilir. Sunucuların birbirlerini ana bilgisayar adlarına göre tanımlamalarına izin veren son iki kayda dikkat edin. IP adreslerini kendiniz değiştirdiğinizden emin olun.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 guest
::1 guest
127.0.0.1 YOUR_MASTER_SERVER_HOST_NAME
::1 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.101 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.102 YOUR_MIRROR_SERVER_HOST_NAME
Düğümlerin birbirine katılmasına izin vermek için bir önkoşul, tüm düğümlerin Erlang çerezinin aynı olmasıdır. Varsayılan olarak, her düğüme benzersiz bir Erlang çerezi atanır, bu nedenle tüm düğümlerde yeniden yapılandırmanız gerekir.
Aşağıdaki komut Erlang çerezini " WE<3COOKIES
" olarak ayarlayacaktır , ancak bunu istediğiniz gibi değiştirmekten çekinmeyin. Bunu tüm sunucularda yapın.
sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"
Erlang çerezinin düzgün bir şekilde yeniden yüklendiğinden emin olmak için RabbitMQ'yu tüm sunucularda yeniden başlatın.
sudo systemctl restart rabbitmq-server.service
Ana sunucu dışındaki tüm sunucularda aşağıdaki komutları yürütün. Bu, düğümlerin ana sunucuya katılmasını ve bir küme oluşturmasını sağlar.
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app
Aşağıdaki komutu çalıştırarak düğümlerin kümeye katıldığını doğrulayın.
sudo rabbitmqctl cluster_status
Tüm düğümleriniz çıktının nodes
ve running_nodes
bölümünde görünecektir . Artık her sunucudaki adımları tekrarlamanıza gerek yok, yapılandırma otomatik olarak diğer düğümlere yansıtılacak.
Artık bir RabbitMQ düğüm kümesine sahip olduğumuza göre, bunu yeni bir politika oluşturarak yüksek kullanılabilirlik kuyrukları ve değişimleri yapmak için kullanabiliriz. Bu ilke RabbitMQ Yönetim Konsolu aracılığıyla veya komut satırı arabirimi kullanılarak eklenebilir.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
Aşağıdaki liste, komutun her bölümünün ne anlama geldiğini açıklayacaktır.
-p "/"
: Bu politikayı "/"
hayalette kullanın (kurulumdan sonra varsayılan)--priority 1
: Politikaların uygulanma sırası --apply-to "all"
: Olabilir "queues"
, "exchanges"
ya da"all"
ha
: Politikamıza verdiğimiz ad ".*"
: Bu ilkenin hangi kuyruklara veya borsalara uygulanacağına karar vermek için kullanılan normal ifade. ".*"
her şeyle eşleşecek'{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
: Politikanın JSON temsili. Bu belgede istediğimiz açıklanmaktadır - verilerin otomatik olarak senkronize edildiği tam olarak 2 düğümKısacası, bu politika en az 2 düğümümüzün olduğu ve çalıştığı sürece bir kuyruk veya değişimdeki verilerin her zaman 2 kopyasına sahip olmamızı sağlayacaktır. Daha fazla düğümünüz varsa değerini artırabilirsiniz ha-params
. N/2 + 1
Düğümlerden oluşan bir çekirdek ( ) önerilir. Verilerinizin daha fazla kopyasına sahip olmak daha yüksek disk, i / o ve net kullanım ile sonuçlanabilir ve bu durum performansın düşmesine neden olabilir.
Verileri kümedeki tüm düğümlere yansıtmak isterseniz, aşağıdaki JSON belgesini kullanabilirsiniz.
'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'
Verileri yalnızca belirli düğümlere yansıtmak isterseniz (örneğin: node-1
ve node-2
), aşağıdakileri kullanabilirsiniz.
'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'
Farklı sıralara farklı ilkeler atamak için normal ifadeyi değiştirebilirsiniz. Diyelim ki şu üç düğüme sahibiz:
Daha sonra "istemci" ile başlayan bir ada sahip olan kuyrukların rabbit@client-ha
düğüme yansıtılmasına ve "ürün" ile başlayan bir ada sahip tüm kuyrukların düğüme yansıtılmasına neden olacak iki ilke oluşturabiliriz rabbit@product-ha
.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-client "client.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@client-ha"], "ha-sync-mode": "automatic"}
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-product "product.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@product-ha"], "ha-sync-mode": "automatic"}
Burada küçük bir açıklama: Bu politika bu tür sıralarla eşleşse bile, özel sıralar RabbitMQ'da asla yansıtılmaz veya kalıcı olmaz. Özel kuyruklar, bir istemci bağlantıyı kestikten sonra otomatik olarak yok edilir ve bu nedenle başka bir sunucuya çoğaltmak yararlı olmaz. Sunucu başarısız olursa, istemci bağlantıyı keser ve sıra otomatik olarak yok edilir. Yansıtılmış örnekler de yok edilecekti.
Kümelenmiş kurulumu test etmek için, yönetim konsolu üzerinden komut satırı arabirimini kullanarak yeni bir kuyruk oluşturabiliriz.
sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true
Bu, varsayılan /
vhost üzerinde kalıcı bir kuyruk oluşturur my-ha-queue
.
Aşağıdaki komutu çalıştırın ve çıktıda kuyruğun 'ha' politikamızın atandığını ve master ve bir ayna düğümünde pid'ler olduğunu doğrulayın.
sudo rabbitmqctl list_queues name policy state pid slave_pids
Artık ana düğümden kuyruğa bir mesaj yayınlayabilir ve ana düğümde RabbitMQ'yu durdurabiliriz.
sudo rabbitmqadmin -u user_name -p password publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown
Şimdi ayna düğümüne bağlanarak geri alın.
sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue
Son olarak, ana düğümümüzü yeniden başlatabiliriz.
sudo systemctl start rabbitmq-server.service
Daha önce de belirtildiği gibi, RabbitMQ otomatik olarak varsayılan konuk şifresi ile konuk kullanıcı oluşturur. Bu varsayılan kullanıcıyı herkese açık bir sistemde bırakmak kötü bir uygulamadır.
sudo rabbitmqctl delete_user guest
Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size
Çok Güvenli FTP arka plan programı, ya da sadece vsFTPd, özelleştirme yeteneği olan hafif bir yazılım parçasıdır. Bu derste bir müttefikimiz olacak
Belirli durumlarda, Sistem Yöneticisinin bir kullanıcı hesabı oluşturması ve yalnızca kendi dosyalarını sFTP yoluyla yönetmek için erişimini kısıtlaması gerekebilir, ancak b
Bu makalede, ModSecurity tarafından korunan bir LEMP yığını oluşturmayı açıklayacağım. ModSecurity faydalı bir açık kaynaklı web uygulaması güvenlik duvarıdır.
Giriş LAMP, Linux, Apache, MySQL ve PHPnin kısaltmasıdır. Bu yazılım yığını, kurulum için en popüler açık kaynaklı çözümdür.
Farklı Bir Sistem mi Kullanıyorsunuz? Chamilo, çevrimiçi eğitim ve takım işbirliği için yaygın olarak kullanılan ücretsiz ve açık kaynaklı bir öğrenme yönetim sistemidir (LMS).
Eskiden OpenERP olarak bilinen Odoo, iyi bilinen bir açık kaynaklı ERP iş platformudur. Her büyüklükteki işletme, bol miktarda lis sayesinde Odoodan yararlanabilir
Icinga2 güçlü bir izleme sistemidir ve bir ana istemci modelinde kullanıldığında, NRPE tabanlı izleme kontrollerine olan ihtiyacın yerini alabilir. Master-Clien
Farklı Bir Sistem mi Kullanıyorsunuz? Couch CMS, web tasarımcılarının tasarlamalarını sağlayan basit ve esnek, ücretsiz ve açık kaynaklı bir İçerik Yönetim Sistemidir (CMS)
Farklı Bir Sistem mi Kullanıyorsunuz? Netdata, gerçek zamanlı sistem ölçümleri izleme alanında yükselen bir yıldızdır. Aynı türdeki diğer araçlarla karşılaştırıldığında, Netdata:
Farklı Bir Sistem mi Kullanıyorsunuz? ERP veya Kurumsal Kaynak Planlaması, temel iş süreçlerini yönetmek için kullanılan bir kurumsal uygulama paketidir. ERPNext ücretsizdir
Başka bir Vultr eğitimine hoş geldiniz. Burada, bir SAMP sunucusunun nasıl kurulacağını ve çalıştırılacağını öğreneceksiniz. Bu kılavuz CentOS 6 için yazılmıştır. Önkoşullar
Genel Bakış Bu makale, bir Kubernetes kümesini hemen kurup kubeadm ile çalıştırmanıza yardımcı olmak içindir. Bu kılavuz iki sunucuyu
Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Sails.js, Ruby on Railse benzer şekilde Node.js için bir MVC çerçevesidir. Modern uygulamalar geliştirmek için yapar
Bu eğitimde, CentOS 6 Sistemine Half Life 2 oyun sunucusu kurma süreci ele alınacaktır. 1. Adım: Önkoşulları kurma
PrestaShop popüler bir açık kaynaklı e-ticaret çözümüdür. Kendi çevrimiçi mağazanızı ücretsiz oluşturmak için kullanabilirsiniz. Bu eğitimde, size
Farklı Bir Sistem mi Kullanıyorsunuz? MODX Revolution hızlı, esnek, ölçeklenebilir, ücretsiz ve açık kaynaklı, kurumsal düzeyde bir İçerik Yönetim Sistemi (CMS)
Giriş Linux sistemleri, süreçleri ve disk alanını izlemeye yardımcı olan varsayılan olarak top, df ve du gibi izleme araçlarıyla birlikte gelir. Çoğu zaman, onlar ar
Farklı Bir Sistem mi Kullanıyorsunuz? Kolab Groupware, ücretsiz ve açık kaynaklı bir web tabanlı grup yazılımı uygulamasıdır. Özellikleri e-posta iletişiminden, olaylardan oluşur
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.
CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.
Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!
Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.
Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun