ÔõÑùÔÚLinuxÉÏÉèÖø߿ÉÓõÄÐÂÎÅÐÐÁÐ
ÔõÑùÔÚlinuxÉÏÉèÖø߿ÉÓõÄÐÂÎÅÐÐÁÐ
СÐò£º
ÐÂÎÅÐÐÁÐÊÇÏÖ´úÂþÑÜʽϵͳÖг£ÓõÄÒ»ÖÖͨѶ·½·¨£¬Ëü¿ÉÒÔÔÚ¶à¸öÀú³Ì»òÕ߶ą̀ЧÀÍÆ÷Ö®¼äת´ïÊý¾Ý£¬ÊµÏÖ½âñîºÍÒ첽ͨѶµÄÄ¿µÄ¡£ÔÚLinuxϵͳÉÏ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýһЩ¿ªÔ´µÄÐÂÎÅÐÐÁÐÈí¼þÀ´´î½¨¸ß¿ÉÓõÄÐÂÎÅÐÐÁÐϵͳ¡£±¾ÎĽ«ÒÔRabbitMQΪÀý£¬ÏÈÈÝÔõÑùÔÚLinuxÉϴºÍÉèÖø߿ÉÓõÄÐÂÎÅÐÐÁС£
°ì·¨Ò»£º×°ÖÃRabbitMQ
Ê×ÏÈ£¬ÎÒÃÇÐèÒªÔÚLinuxϵͳÉÏ×°ÖÃRabbitMQ¡£¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÀ´×°ÖÃRabbitMQ£º
sudo apt-get install rabbitmq-server
µÇ¼ºó¸´ÖÆ
°ì·¨¶þ£ºÉèÖÃRabbitMQ¼¯Èº
ΪÁËʵÏָ߿ÉÓÃÐÔ£¬ÎÒÃÇÐèÒª½«¶à¸öRabbitMQ½ÚµãÉèÖÃΪ¼¯Èº¡£ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄÀý×Ó£¬¼ÙÉèÎÒÃÇÓÐÁ½Ì¨Ð§ÀÍÆ÷£¬»®·ÖΪNode1ºÍNode2¡£ÎÒÃÇÐèÒªÔÚÁ½Ì¨Ð§ÀÍÆ÷ÉÏ»®·Ö±à¼RabbitMQµÄÉèÖÃÎļþ¡£
ÔÚNode1ÉÏ£¬·¿ª/etc/rabbitmq/rabbitmq.configÎļþ£¬²¢Ìí¼ÓÒÔÏÂÄÚÈÝ£º
[{rabbit, [{cluster_nodes, {['rabbit@Node1', 'rabbit@Node2'], disc}}]}].
µÇ¼ºó¸´ÖÆ µÇ¼ºó¸´ÖÆ
ÔÚNode2ÉÏ£¬·¿ª/etc/rabbitmq/rabbitmq.configÎļþ£¬²¢Ìí¼ÓÒÔÏÂÄÚÈÝ£º
[{rabbit, [{cluster_nodes, {['rabbit@Node1', 'rabbit@Node2'], disc}}]}].
µÇ¼ºó¸´ÖÆ µÇ¼ºó¸´ÖÆ
ÐèҪעÖصÄÊÇ£¬ÉÏÊöÉèÖÃÎļþÖеĽڵãÃû³ÆÐèҪƾ֤ÏÖÕæÏàÐξÙÐÐÐ޸ġ£ÉúÑÄÎļþºó£¬ÖØÆôRabbitMQЧÀÍ£º
sudo systemctl restart rabbitmq-server
µÇ¼ºó¸´ÖÆ
°ì·¨Èý£ºÉèÖÃRabbitMQ¾µÏñÐÐÁÐ
RabbitMQÌṩÁ˾µÏñÐÐÁеĹ¦Ð§£¬¿ÉÒÔ½«ÐÂÎÅÐÐÁÐÔÚ¶à¸ö½ÚµãÖ®¼ä¾ÙÐи´ÖÆ£¬ÊµÏÖÊý¾ÝµÄÈßÓà´æ´¢£¬Ìá¸ßϵͳµÄ¿É¿¿ÐÔ¡£ÎÒÃÇ¿ÉÒÔÔÚ½¨ÉèÐÐÁÐʱͨ¹ýÉèÖÃdurableºÍarguments²ÎÊýÀ´ÊµÏÖ¾µÏñÐÐÁеĹ¦Ð§¡£
import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # ÔÚÉùÃ÷ÐÐÁÐʱ£¬Í¨¹ýÉèÖÃdurable²ÎÊýΪTrueÀ´³¤ÆÚ»¯ÐÐÁÐ channel.queue_declare(queue='my_queue', durable=True) # ÔÚÉùÃ÷ÐÐÁÐʱ£¬Í¨¹ýÉèÖÃarguments²ÎÊýÀ´ÉèÖþµÏñÐÐÁеÄÕ½ÂÔ channel.queue_declare(queue='my_queue', durable=True, arguments={"x-ha-policy": 'all'}) connection.close()
µÇ¼ºó¸´ÖÆ
ÐèҪעÖصÄÊÇ£¬ÔÚÉèÖþµÏñÐÐÁÐʱÐèÒª°ü¹Ü¼¯ÈºÖеÄËùÓнڵ㶼ÒѾÉèÖóɼ¯Èº¡£¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÀ´Éó²é¼¯ÈºÖеĽڵãÐÅÏ¢£º
sudo rabbitmqctl cluster_status
µÇ¼ºó¸´ÖÆ
°ì·¨ËÄ£ºÉèÖøºÔØƽºâ
ΪÁËʵÏÖ¸ºÔØƽºâ£¬ÎÒÃÇ¿ÉÒÔʹÓÃNginx×÷ΪÐÂÎÅÐÐÁеÄÊðÀíЧÀÍÆ÷¡£ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄNginxÉèÖÃÎļþʾÀý¡£
http { upstream rabbitmq_servers { server 192.168.1.100:5672 fail_timeout=60s max_fails=3; server 192.168.1.101:5672 fail_timeout=60s max_fails=3; } server { listen 5672; location / { proxy_pass http://rabbitmq_servers; proxy_redirect off; } } }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÊöÉèÖÃÎļþÖУ¬ÎÒÃǽç˵ÁËÁ½¸öRabbitMQЧÀÍÆ÷µÄµØµãºÍ¶Ë¿Ú£¬Í¨¹ýproxy_passÖ¸ÁÇëÇóת·¢µ½ÕâЩЧÀÍÆ÷ÉÏ¡£Nginx»áƾ֤¸ºÔØƽºâËã·¨£¬½«ÐÂÎÅÇëÇóÔȳƵطַ¢µ½²î±ðµÄRabbitMQ½ÚµãÉÏ£¬´Ó¶øʵÏÖ¸ºÔØƽºâµÄЧ¹û¡£
½áÂÛ£º
ͨ¹ýÉÏÊö°ì·¨£¬ÎÒÃÇ¿ÉÒÔÔÚLinuxϵͳÉϴºÍÉèÖø߿ÉÓõÄÐÂÎÅÐÐÁÐϵͳ¡£Ê¹ÓÃRabbitMQÌṩµÄ¼¯Èº¹¦Ð§£¬¿ÉÒÔʵÏÖ½ÚµãÖ®¼äµÄÊý¾Ý¸´Öƺ͹ÊÕÏתÒÆ£¬°ü¹ÜϵͳµÄ¿É¿¿ÐԺ͸߿ÉÓÃÐÔ¡£¶øͨ¹ýÉèÖøºÔØƽºâ£¬¿ÉÒÔʵÏÖÐÂÎÅÐÐÁеĸºÔØƽºâºÍÐÔÄÜÓÅ»¯¡£Ï£Íû±¾ÎÄÄܶԶÁÕßÔÚLinuxϵͳÉÏÉèÖø߿ÉÓõÄÐÂÎÅÐÐÁÐÓÐËù×ÊÖú¡£
²Î¿¼Á´½Ó£º
[RabbitMQ](https://www.rabbitmq.com/)
[Nginx](https://nginx.org/)
ÒÔÉϾÍÊÇÔõÑùÔÚLinuxÉÏÉèÖø߿ÉÓõÄÐÂÎÅÐÐÁеÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡