Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04
Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.
RabbitMQ adalah broker pesan sumber terbuka yang mendukung AMQP, STOMP, dan teknologi komunikasi lainnya. Ini banyak digunakan dalam aplikasi perusahaan dan arsitektur layanan mikro modern di mana ia bertindak sebagai saluran pesan tidak sinkron antara berbagai layanan mikro. Panduan ini akan menjelaskan bagaimana Anda bisa mengelompokkan RabbitMQ pada beberapa server CentOS 7 untuk membentuk broker pesan ketersediaan tinggi. Dalam tutorial ini, satu server akan bertindak sebagai server master dan server lainnya akan bertindak sebagai server cermin jika server master tidak tersedia.
CentOS firewall, ( firewalld
), tidak mengizinkan lalu lintas masuk secara default. Untuk membuat RabbitMQ tersedia untuk sistem lain di dalam dan di luar jaringan, dan untuk memungkinkan kami mengakses konsol manajemen, pertama-tama kita harus membuka beberapa port.
Konsol manajemen antarmuka web RabbitMQ mendengarkan secara default di port 15672
. Kami ingin membuat konsol manajemen tersedia untuk umum sehingga kami dapat mengaksesnya dari komputer kami. Karena itu kami akan menginstruksikan firewalld
untuk secara permanen membuka port 15672
di zona publik (yang merupakan zona default dan aktif pada instance Vultr).
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
Simpul RabbitMQ harus dapat berkomunikasi satu sama lain. Kami ingin membuka port yang diperlukan, tetapi hanya melalui jaringan internal. Kami tidak ingin siapa pun di internet dapat mengelola atau langsung menghubungi server kami. Perintah berikut menganggap bahwa server kami ada di 192.168.0.100/24
subnet.
Layanan pertama adalah layanan epmd
penemuan rekan yang mendengarkan secara default di port 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'
Untuk komunikasi internode dan CLI, RabbitMQ harus dapat berkomunikasi melalui port 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'
Alat CLI berkomunikasi melalui rentang port 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'
Jika aplikasi Anda memerlukan protokol AMQP, Anda juga perlu membuka porta 5671
dan 5672
. Jika Anda harus dapat berkomunikasi melalui protokol lain, Anda dapat menemukan informasi yang diperlukan tentang persyaratan jaringan RabbitMQ pada dokumentasi resmi RabbitMQ .
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'
Sekarang firewalld
sudah dikonfigurasi, kita perlu menginstruksikannya untuk memuat ulang konfigurasi.
sudo firewall-cmd --reload
Ulangi langkah-langkah dari bagian ini di semua server.
rabbitmqadmin
Plugin manajemen dilengkapi dengan alat Python yang disebut rabbitmqadmin
yang dapat dengan mudah diinstal pada sistem setelah plugin manajemen diaktifkan.
sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin
Anda harus menggunakan nama host server untuk mengidentifikasi server saat pengelompokan. Secara default, server tidak memiliki catatan DNS yang ditetapkan dan koneksi akan gagal. Untuk segera mengatasinya, tambahkan nama host master dan mirror ke /etc/hosts
file menggunakan editor favorit Anda.
Misalnya, file host master Anda mungkin terlihat seperti berikut. Perhatikan dua catatan terakhir, yang memungkinkan server untuk mengidentifikasi satu sama lain dengan nama host mereka. Pastikan untuk mengubah alamat IP ke alamat Anda.
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
Prasyarat impor untuk memungkinkan node bergabung satu sama lain adalah bahwa cookie Erlang dari semua node identik. Secara default, setiap node akan diberi cookie Erlang yang unik, jadi Anda harus mengkonfigurasi ulang pada semua node.
Perintah berikut akan mengatur cookie Erlang menjadi " WE<3COOKIES
", tetapi jangan ragu untuk mengubahnya sesuai keinginan Anda. Lakukan ini di semua server.
sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"
Mulai ulang RabbitMQ di semua server untuk memastikan bahwa cookie Erlang dimuat ulang dengan benar.
sudo systemctl restart rabbitmq-server.service
Jalankan perintah berikut pada semua server kecuali pada server master. Ini akan membiarkan node bergabung dengan server master dan membentuk sebuah cluster.
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app
Verifikasi bahwa node telah bergabung dengan cluster dengan menjalankan perintah berikut.
sudo rabbitmqctl cluster_status
Semua node Anda akan muncul di bagian nodes
dan running_nodes
di output. Mulai sekarang, Anda tidak perlu lagi mengulangi langkah-langkah di setiap server, konfigurasi akan secara otomatis dicerminkan ke node lain.
Sekarang kita memiliki sekelompok node RabbitMQ, kita dapat menggunakan ini untuk membuat antrian ketersediaan tinggi dan pertukaran dengan menyiapkan kebijakan baru. Kebijakan ini dapat ditambahkan melalui RabbitMQ Management Console atau menggunakan antarmuka baris perintah.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
Daftar berikut ini akan menjelaskan apa arti setiap bagian dari perintah.
-p "/"
: Gunakan kebijakan ini di "/"
vhost (default setelah instalasi)--priority 1
: Urutan untuk menerapkan kebijakan --apply-to "all"
: Bisa jadi "queues"
, "exchanges"
atau"all"
ha
: Nama yang kami berikan untuk kebijakan kami ".*"
: Ekspresi reguler yang digunakan untuk memutuskan antrian atau pertukaran kebijakan mana yang diterapkan. ".*"
akan cocok dengan apa pun'{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
: Representasi kebijakan JSON. Dokumen ini menjelaskan bahwa kami ingin - tepatnya 2 node tempat data disinkronkan secara otomatisSingkatnya, kebijakan ini akan memastikan bahwa kami akan selalu memiliki 2 salinan data pada antrian atau pertukaran selama kami memiliki minimal 2 node aktif dan berjalan. Jika Anda memiliki lebih banyak node, Anda dapat meningkatkan nilai ha-params
. Kuorum, ( N/2 + 1
), dari node disarankan. Memiliki lebih banyak salinan data Anda akan menghasilkan disk yang lebih tinggi, i / o, dan penggunaan bersih yang dapat mengakibatkan kinerja yang menurun.
Jika Anda ingin mirror data ke semua node di cluster, Anda bisa menggunakan dokumen JSON berikut.
'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'
Jika Anda ingin mirror data hanya ke node tertentu, (misalnya: node-1
dan node-2
), Anda bisa menggunakan yang berikut ini.
'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'
Anda dapat mengubah ekspresi reguler untuk menetapkan kebijakan berbeda ke antrian yang berbeda. Katakanlah kita memiliki tiga simpul berikut:
Kita kemudian dapat membuat dua kebijakan yang akan menghasilkan antrian yang memiliki nama yang dimulai dengan "klien" untuk dicerminkan ke rabbit@client-ha
simpul dan semua antrian yang memiliki nama yang dimulai dengan "produk" untuk dicerminkan ke rabbit@product-ha
node.
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"}
Sebuah komentar kecil di sini: antrian eksklusif tidak pernah dicerminkan atau tahan lama di RabbitMQ, bahkan jika kebijakan ini cocok dengan antrian tersebut. Antrian eksklusif secara otomatis dihancurkan begitu klien memutus dan, dengan demikian, tidak ada gunanya untuk mereplikasi ke server lain. Jika server gagal, klien akan memutuskan dari itu dan antrian akan dihancurkan secara otomatis. Contoh cermin akan dihancurkan juga.
Untuk menguji pengaturan berkerumun kami dapat membuat antrian baru menggunakan antarmuka baris perintah melalui konsol manajemen.
sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true
Ini akan membuat antrian yang tahan lama pada /
vhost default dengan namanya my-ha-queue
.
Jalankan perintah berikut dan verifikasi di output bahwa antrian memiliki kebijakan 'ha' kami ditugaskan dan memiliki pid pada master dan pada mirror node.
sudo rabbitmqctl list_queues name policy state pid slave_pids
Kami sekarang dapat mempublikasikan pesan ke antrian dari master node dan menghentikan RabbitMQ pada master node.
sudo rabbitmqadmin -u user_name -p password publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown
Sekarang dapatkan kembali dengan menghubungkan ke mirror node.
sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue
Akhirnya, kita dapat me-restart node master kita.
sudo systemctl start rabbitmq-server.service
Seperti disebutkan sebelumnya, RabbitMQ secara otomatis membuat pengguna tamu dengan kata sandi tamu default. Ini akan menjadi praktik yang buruk untuk meninggalkan pengguna default ini pada sistem terbuka untuk umum.
sudo rabbitmqctl delete_user guest
Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.
Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1
Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.
Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.
Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.
Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.
CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?
Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.
Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!
Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.