Search This Blog

Showing posts with label load. Show all posts
Showing posts with label load. Show all posts

Thursday, July 18, 2019

Cluster - Rabbit MQ Master Slave

RabbitmQ Master & Slave Installation Documents:

apt-get update
apt-get install rabbitmq-server
Enable the plugin - cd /etc/rabbitmq - rabbitmq-plugins enable rabbitmq_management

Master:

vi /etc/rabbitmq/rabbitmq-env.conf
    NODENAME=rabbit@rabbitmaster (must be unique, can be arbitrary)
chown rabbitmq:rabbitmq /etc/rabbitmq/*
chmod 400 /etc/rabbitmq/*
 vi /etc/hosts - add the following line (must match the content after "@" in the rabbitmq-env.conf NODENAME
    127.0.0.1   rabbitmaster
systemctl restart rabbitmq-server - a success message is displayed when the restart completes successfully.

Slave:

vi /etc/rabbitmq/rabbitmq-env.conf
   NODENAME=rabbit@rabbitslave
vi /etc/hosts - add the following lines:
Note:  192.168.7.* is the local IPv4 address of the master server (e.g., 192.x.x.x)

192.168.7.*  rabbitmaster

127.0.0.1   rabbitslave


sudo chown rabbitmq:rabbitmq /etc/rabbitmq/*

ls -a - show the hidden files & folders
ls -la - show the hidden files & folders with permission

execute below commands in master to slave

before copying please take .erlang.cookie in slave server.
scp -r /var/lib/rabbitmq/.erlang.cookie root@192.168.7.189:/var/lib/rabbitmq/
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 600 /var/lib/rabbitmq/.erlang.cookie

systemctl restart rabbitmq-server

execute below commands in master

systemctl restart rabbitmq-server
rabbitmqctl start_app

Before this step, you have to reboot your slave servers. Run this at all slave nodes;

systemctl status rabbitmq-server
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmaster
rabbitmqctl start_app

Execute the below commands in master server

Verify the cluster with running this command at master node;
rabbitmqctl cluster_status
Adding new administrator user
Add a new/fresh user, say user ‘test’ and password ‘test’
rabbitmqctl add_user test test
Give administrative access to the new user
rabbitmqctl set_user_tags test administrator
Set permission to newly created user
rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
HA Queues
To make all queues HA run this command at master. With this policy enabled RabbitMQ sync all queues to all nodes.
rabbitmqctl set_policy ha-all "" '{"ha-mode":"all","ha-sync-mode":"automatic"}'


Sunday, August 12, 2012

JBoss 6 clustering with Apache Modjk [ Load balance ]


Download the software required

  Apache Server :- httpd-2.2.21-win32-x86-no_ssl.msi
  mod_jk :- tomcat-connectors-1.2.32-windows-i386-httpd-2.0.x.zip
  Jboss Application Server :- jboss-as-distribution-6.0.0.Final.zip

  unzip the mod_jk zip file and copy mod_jk.so and paste it under APACHE_HOME/modules/

Configure Apache to load mod_jk

  1)  Modify APACHE_HOME/conf/httpd.conf  and add a single line at the end of the file
   
     # Include mod_jk's specific configuration file 
  Include conf/mod-jk.conf
 

  and modify these line in httpd.conf file

  Listen localhost:80

  ServerName localhost

  
 2) Next, create a new file named APACHE_HOME/conf/mod-jk.conf:

   # Load mod_jk module
 # Specify the filename of the mod_jk lib
 LoadModule jk_module modules/mod_jk.so

 # Where to find workers.properties
 JkWorkersFile conf/workers.properties

 # Where to put jk logs
 JkLogFile logs/mod_jk.log

 # Set the jk log level [debug/error/info]
 JkLogLevel info

 # Select the log format
 JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"

 # JkOptions indicates to send SSK KEY SIZE
 JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

 # JkRequestLogFormat
 JkRequestLogFormat "%w %V %T"
              
 # Mount your applications
 JkMount /helloworld/* loadbalancer

     (Note :- here you have to give you war file name)

 # You can use external file for mount points.
 # It will be checked for updates each 60 seconds.
 # The format of the file is: /url=worker
 # /examples/*=loadbalancer
 JkMountFile conf/uriworkermap.properties              

 # Add shared memory.
 # This directive is present with 1.2.10 and
 # later versions of mod_jk, and is needed for
 # for load balancing to work properly
 JkShmFile logs/jk.shm
             
 # Add jkstatus for managing runtime data
 
     JkMount status
        Order deny,allow
     Deny from all
     Allow from 127.0.0.1
 


   3) Create a uriworkermap.properties file in the APACHE_HOME/conf directory.
 # Simple worker configuration file
 # Mount the Servlet context to the ajp13 worker
 /jmx-console=loadbalancer
 /jmx-console/*=loadbalancer
 /web-console=loadbalancer
 /web-console/*=loadbalancer
 /helloworld/*=loadbalancer

Configure worker nodes in mod_jk
   4) Next, you need to configure mod_jk workers file conf/workers.properties
 # Define list of workers that will be used
 # for mapping requests
 worker.list=loadbalancer,status
 #worker.list=node1

 # Define Node1
 # modify the host as your host IP or DNS name.
  worker.node1.port=8009
  worker.node1.host=192.168.7.59
  worker.node1.type=ajp13
  worker.node1.lbfactor=1
  worker.node1.cachesize=10

 # Define Node2
 # modify the host as your host IP or DNS name.
  worker.node2.port=8009
  worker.node2.host= 192.168.7.50
  worker.node2.type=ajp13
  worker.node2.lbfactor=1
  worker.node2.cachesize=10

 # Define Node3
 # modify the host as your host IP or DNS name.
  worker.node3.port=8009
  worker.node3.host= 192.168.7.58
  worker.node3.type=ajp13
  worker.node3.lbfactor=1
  worker.node3.cachesize=10

 # Load-balancing behaviour
  worker.loadbalancer.type=lb
  worker.loadbalancer.balance_workers=node1,node2,node3
  worker.loadbalancer.sticky_session=0
  worker.list=loadbalancer

 # Status worker for managing load balancer
  worker.status.type=status

Configuring HTTP session state replication
     1) Enabling session replication in your application
 To enable replication of your web application sessions, you must tag the application as  distributable in the web.xml descriptor(web.xml of your application war file).

<distributable/>
 

Deploy the application in JBoss
 Deploy the application war file in server\all\deploy
Start the Jboss different nodes
 Then run the Jboss in different machines by using command
      run.bat -b -c all -D jboss.messaging.ServerPeerID= -D  jboss.service.binding.set=ports-default

Example
 run.bat -b 192.168.7.59 -c all -D jboss.messaging.ServerPeerID=1 -D  jboss.service.binding.set=ports-default
 run.bat -b 192.168.7.50 -c all -D jboss.messaging.ServerPeerID=2 -D   jboss.service.binding.set=ports-default

Run the application using the URL
 http://localhost/helloworld/hi.jsp


Hit Counter


View My Stats