Re: [SSI-devel] [Fwd: bug#922788]
Brought to you by:
brucewalker,
rogertsang
From: Aneesh K. KV <ane...@di...> - 2004-04-13 21:05:30
|
> > > > I am working on bug#922788 submitted by David Zafman, > > Bug summary : > ------------- > ha-lvs doesn't stop completely > > When the ha-lvs service stop, all alias should be > removed from all nodes. You can still ping the CVIP > address of a cluster even after "service ha-lvs stop" > has been run. > > Solution : > ---------- > This involves calling 'ifconfig down' on all interfaces configured by > lvs on all director-nodes and real-server nodes. > > Am planning on > Writing a script that, > *) parses the cvip.conf ( use the package written by keerthi) > *) shuts down every configured interface > (script derived from /usr/sbin/clusterip.sh that belongs to ha-lvs, > and that configures lvs interfaces) > > Should this be made into a separate script like clusterip_down.sh ? > > The usage of this one will be same as clusterip.sh : > > Usage: clusterip_down.sh director/realserver <clusterip> <interface> > Where clusterip is the dotted IP address > interface is the interface name that should be removed > > Any suggestions ? I guess the above steps should be done only on possible master director node. Also don't make the assumption that only one CVIP is possible in the cluster. Also don't make the assumption that all nodes have the same master node. I have written ha-lvs without making any of these assumption. My plan was to have partitioned systems based on CVIP in a openssi cluster. The steps that need to be done are 1) First check whether the current node is the master director node for this IP. 2) if yes call respective function to make sure that all the changes made to the internal kernel data structures( port weight list ) are dropped. This should happen in the real server.The port weight list is built there. ( This is going to be bit complex ). 3) If a node is a master director node it WILL/SHOULD be the master director node for all other possible CVIPs that it has voted( via cvip.conf ) to be the director node. so repeat the above two steps for all other CVIPS. 3) Drop all entries in ipvs table. I guess ipvsadm command can be used for this. 4) Drop ipvs tables in all possible director nodes that was syncing withe master director nodes. ( You can get the list from cvip.conf ) 5) At this stage kernel internal state should be same as before we start the ha-lvs . ( I mostly forgot what i wrote . So you may need to look at cluster/ssi/net and af_inet.c ) 6) Now remove the CVIP interface. Some of the above functionality you can do as a part of SIGTERM handler in /usr/sbin/ha-lvs. ha-lvs already have lot of data structures already built from the cvip.conf file. Again I am not sure what we will do with real servers ? Are we going to inform them that they are not going to get any more data from the client. If so how ? -aneesh -- ph: 603-884-5742 |