In my environment we have two HP 3PAR 7400 arrays configured for synchronous replication. They are separated by about 16 miles with a 10Gb DWDM (dense wave devision multiplexing) link. We use Peer Persistence for VMware and HP CLX cluster extensions for Hyper-V to enable seamless failover between arrays.
A vital component is the HP 3PAR quorum witness server which arbitrates in a split-brain scenario. Today we shall look at the deployment and configuration of the 3PAR quorum witness server appliance.
Note: While I will try to cover the process in detail I am assuming a basic understanding of the 3PAR quorum witness design and purpose.
What is a Quorum Witness?
The HP 3PAR Quorum Witness is a virtual machine (VM) appliance deployed on ESXi that acts as an arbitrator in a split-brain scenario. You should always deploy the witness server on a third site with diverse routes to your two datacentres (DCs). As the witness is deployed to arbitrate in a split-brain scenario it needs to be hosted externally to your DCs.
The system essentially works by polling each 3PAR and allowing them to communicate back to the witness. In the event of a failure the witness will aid the decision making process of whether a 3PAR array should cease control of any volumes exported by it’s partner.
For a high level overview please see my post – https://www.bytesizedalex.com/hp-3par-quorum-witness-role/
3PAR Quorum Witness OVF Deployment
I’m going to assume you have downloaded the latest copy of the 3PAR quorum witness appliance and have access to VMware vCenter to import the OVF.
There are a number of ways to import the appliance, the screenshots below will demonstrate one method.
Logon to the vSphere web client and use the menu option to deploy and OVF template.
Click ‘Next’ and then ‘Browse’.
Select the downloaded OVF file.
Click ‘Next’ to continue.
Review the summary for the quorum witness appliance then click ‘Next’ to continue.
Enter a suitable name for the virtual machine, select a location in your vCenter inventory and click ‘Next’ to continue.
Select a vCenter cluster/host for the virtual machine to run on – remember this should be on a third site and not on one of the two datacentres hosting your 3PAR arrays. Click ‘Next’ to continue.
Select the datastore for the VM and choose whether between ‘Thick’ and ‘Thin’ provisioning. I have chosen to use ‘Thin’ provisioning which is recommended. If you choose to thick provision the VM you will find it uses 256GB of space, the vast majority of which will never actually be used by the VM. Once complete click ‘Next’ to continue.
Select the correct network settings for your environment then click ‘Next’ to continue.
Review the deployment summary and click ‘Finish’ to deploy the OVF.
At this point the OVF file will be imported into vCenter and deployed using the settings defined during the wizard. Once deployed we can start the 3PAR quorum witness configuration.
3PAR Quorum Witness Configuration
Power on the VM and connect to the console. Allow the VM time to start then select your keyboard from the list available. Use the ‘TAB’ button on your keyboard to move between options. Tab to the ‘OK’ button and press the space bar or ‘Enter’ to continue.
The wizard will prompt you to enter a new password for the ‘root’ account.
Select ‘Device Configuration’.
Select ‘eth0’ and press Enter.
Configure appropriate IP settings for the VM. I recommend you also configure your DNS server with the relevant record for this VM at this time. Once complete select the ‘OK’ button to return to the previous menu.
Select ‘Save’.
You will return to a previous menu, this time select ‘DNS Configuration’.
Enter the required details to ensure hostname, DNS servers and DNS search path are complete then select ‘OK’.
Select ‘Save&Quit’.
You will be presented with a new menu. Do not make any changes, select the ‘Cancel’ option.
You will be presented with a new menu. Do not make any changes, select the ‘Cancel’ option.
The system will now bring up the network interface and complete configuration.
Once you are presented with a logon prompt authenticate as the root user with the password defined earlier.
We need to make some changes to a configuration file. Use the command below –
vi /etc/sysconfig/network-scripts/ifcfg-eth0
The command will open the configuration file – you need to comment out or delete the ‘PREFIX’ line (e.g ### PREFIX=20).
In my deployment this line did not exist therefore I exited vi. If you do find the ‘PREFIX’ line exists then comment it or delete then save the file and exit vi.
Now verify the IP address information for the VM is correct using the ‘ifconfig’ command.
We will verify that the quorum witness appliance is functioning correctly. Enter the command ‘curl http://[serverNameFQDN]:8080’
For example –
curl http://bsa.3parqw01.bsa.com:8080
The expected response is –
{"couchdb":"Welcome","version":"1.0.4"}
You can also test functionality by using ‘localhost’ as a hostname however you should always try using the system FQDN to properly validate.
Now we will test the witness database – here I have demonstrated using ‘localhost’ though again you should really check this using the FQDN. Enter the command ‘curl http://[serverNameFQDN]:8080’/witness’
For example –
curl http://bsa.3parqw01.bsa.com:8080/witness
The return should be similar to the following example. The actual values may vary, but doc_count should be at least 1 and the not_found error should not occur.
{"db_name":"witness","doc_count":1,"doc_del_count":0,"update_seq":1,"purge_seq":0,"compact_running":false,"disk_size":4185,"instance_start_time":"1407454201619825","disk_format_version":5,"committed_update_seq":1}
Assuming no errors have occurred the 3PAR quorum witness has been successfully deployed and configured. At this point we could configure our 3PAR arrays to use the witness however I would suggest ensuring the VMware tools components are updated before proceeding. Mount the VMware tools on the VM via vCenter then use the commands below to install using the default options.
mount /dev/cdrom /mnt/cdrom cp /mnt/cdrom/VMwareTools-*.tar.gz /tmp tar -zxf /tmp/VMwareTools-*.tar.gz -C /tmp cd / ./tmp/vmware-tools-distrib/vmware-install.pl --default
Cleanup the remaining extracted files –
rm -f /tmp/VMwareTools-*.tar.gz rm -rf /tmp/vmware-tools-distrib
Hopefully I’ve covered everything in sufficient detail however if you do have any questions please feel free to comment below and send me a Tweet so I can assist.
In my next post we will look at completing the witness configuration on our 3PAR arrays.
Hello,
Thanks for this great post.
is there a way to verify that 3par array can communicate with the witness ? I mean, is there any 3par witness service that I can monitor or a command that verify the connection with 3par witness ?
Regards
Hi EMD,
Thanks for the positive feedback. The quick answer is yes you can check via the 3PAR management software (traditional console, web or CLI) to see if there is witness communication. IF you want to monitor from something else it depends on the tools you have available to you. For example, I use the SolarWinds monitoring tools in my business to check the URL and report back to me if it doesn’t respond. I’m looking at enhancing that to look for specific strings in the returned data so I can be sure it really is working. Alternatively you could use PowerShell or some other command language script to do something similar.
As an example with PowerShell we can use the invoke-webrequest cmdlet –
Invoke-WebRequest -Uri http://bsa-3parqw01.bytesizedalex.com:8080/witness
If you run this substituting your witness FQDN you will get some good data back in the command response which you could then use to generate alerts. I think the best property to use would be ‘Content’. For example I know in the past when the witness has stopped working the curl command run locally would output –
[root@BSA-3PARQW01 /]# curl http://localhost:8080/witness
curl: (7) couldn’t connect to host
With that in mind we could write a script using invoke-webrequest which looked at the content property for that statement and then generate an alert. I’d be really interested to hear how you go about implementing your monitoring – if you have any questions or want to discuss further let me know. Hopefully my comments have made some sense!
Regards,
Alex
Hi Alex,
Many thanks for the prompt reply. Using powershell is smart idea. Personally, I might use the ‘Status Code’ property if the returned value other than 200 alert is generated.
You mentioned that I can check the witness communication via HP management software, I appreciate if you can tell me how.
Regards,
Hi EMD,
That sounds like a good idea. With regard to the management software, it’s pretty basic – essentially you can just see whether the witness is running and the array is talking with it. With the traditional management console you can check by going to the ‘Remote Copy’ tab and viewing the ‘Heartbeat Round Trip’ chart. Also if you click on the Peer Persistence tab you can see if there is a tick in the box for both arrays. When the witness hasn’t worked this tick usually vanishes.
If you are using the newer web client (SSMC) you can view the same information under the ‘Remote Copy Configuration’ tab by clicking on the ‘Targets’ dropdown. Again it’s pretty basic, just tells you it’s started.
Finally you can see this info from the command line by running ‘showrcopy -qw’. This can generate a lot of text depending on your config but the bit you are interested in comes in the first few lines. As above it will just tell you if the witness is started or not.
Off the top of my head I can’t think of any other areas to look in the 3PAR tools, they are pretty basic in what they tell you which is why I’ve started to lean towards some other way of monitoring the witness. Hopefully this all made sense, if not let me know.
Regards
Alex
Please provide the link of post completing the witness configuration on 3PAR arrays.
Thanks,
Amit
Hi Amit, I don’t have access to that 3PAR setup now I’m in a new job. The standard HPE instructions should be sufficient. I created this post as at the time the documentation for this task wasn’t great. If I get access to another setup I can try and document.
It was a great post , but iam looking for reconfiguration of quorom witness
1) Stop QW
2) Remove QW
3) Configure QW back and start (IP is the same:)
can you please help
Hi Raj,
I’m not sure what you’re asking but if you follow those steps you can easily swap a QW for a new one. It will not have an impact on production systems though of course if there was a problem which required the witness to arbitrate you’d have a situation to take care of.