SQL Availability Group Listeners in Windows Azure - sql

We have a staging and production SharePoint farm housed within Windows Azure. All servers run Windows Server 2012. We're having the same issues in both environments, but for this question, I'll focus on the staging environment.
For the staging environment, I have several servers within the SharePoint farm and 2 SQL servers. All servers are located on the same subnet and affinity group. There is a DHCP server that hands out 192.168.X.X addresses for all servers on the subnet.
I've created a WSFC with both SQL servers as nodes. I've tried creating the cluster with an IP of an unused DHCP address (192.168.X.X) and with a link local address (using a PowerShell script to create the cluster found online from Microsoft). In both cases, the cluster IP is not accessible from any machine on the subnet. However, in both cases, the cluster appears to be up and restarting the active node pushes the passive node to the new active node. I think that this may be one of my root problems.
My final goal is to create an SQL Availability Group Listener for SharePoint to use for DB connections. With the cluster created, I am able to create an Availability Group in SQL Management Studio. I can see that it works: when rebooting the primary replica, the secondary turns to primary, all DBs are synced and up to date, etc. However, when I try to create the AG Listener, it fails with an error claiming that it cannot access the cluster or the cluster is not active.
I've read a lot online. Some claim that it's not possible to create AGs in Azure, others claim that this hotfix fixes things (http://support.microsoft.com/kb/2854082), and a few that claim it works when you set the Listener IP to the public endpoint. I've tried them all and haven't had any success. There's got to be some way to increase the reliability of SQL in a totally enclosed, Azure environment. Does anyone have any experience with this? Has anyone gotten it to work? If so, how did you do it? If not, is there another way to go about SQL availability?

Related

Symmetricds one way setup

I am a little confused on how to setup a one way 3 tier replication using symmetricds.
What I am trying to setup is something like this:
The company server is not connected to the internet and as you can see it's one way, and basically the final tier is a readonly database used by a web application .
How to setup this 2 steps replication?
Do I need to install Symmetric (java . etc) in each server?
Need some guideline here, thanks.
Zack,
It sounds like at a minimum you would want 2 SymmetricDS installations. One for your company server and intermediate server. If these are on the same local network a multi-homed (local node) setup would work. I would make the company server the master node and the intermediate a local node in the same installation. The final installation of SymmetricDS would be close to your DB internet server (you want a reliable JDBC connection here). Then I would setup 3 node groups (ex: server, intermediate, web). I would build group links:
intermediate pulls from server (for your data)
intermediate pushes to server (for heartbeats and config)
intermediate pushes to web (for your data and allows you to keep a firewall in place from outside connections in).
intermediate pulls from web (for heartbeats and config)
From here you can select your tables for replication and should be all set.
Take a look at the demo here to become more familiar with the basic configuration.
Start off by syncing your company and intermediate server.
Once you are syncing your company and intermediate server, add your third tier. Additional information on adding multiple tiers can be found here.
SymmetricDS uses JDBC drivers to communicate with the database. JDBC is not intended to run over the internet. This is why SymmetricDS should be installed local to each DB instance.
It is possible to point one SymmetricDS instance to two different DB's. You should only do this if both DBs exist on the same network. More information on adding multiple nodes here.

Weblogic domain for physically separated managed servers

I want to create a weblogic cluster that has two managed servers each running on a physically separated remote machine
According to weblogic docs
All Managed Servers in a cluster must reside in the same domain; you
cannot split a cluster over multiple domains.
Ref: https://docs.oracle.com/cd/E24329_01/web.1211/e24970/understand_domains.htm#DOMCF125
If this is the case then where am I suppose to create the Managed Server on the remote machine. Since the managed server can only be created in the domain, am I not suppose to create the domain on the remote machine for holding managed server?
[edit]
As per the below documentation
https://docs.oracle.com/cd/E17904_01/web.1111/e14144/tasks.htm#WLDPU136
It seems that the admin server domain is replicated on remote managed servers using pack and unpack commands.
That means a separate copy of domain must be made available on remote machines in order to operate managed servers on it.
Is it the fault with the oracle documentation-
Because then its the violation of the Domain Restrictions rule which says that there should be only one domain per cluster?
Domain is logical group for all Weblogic resources like relam, cluster, manged servers. You can create managed servers on physically separated remote machine and group them in a same Weblogic domain.
In a WebLogic Server domain there is always one administration server. This special instance of WebLogic Server is responsible for the configuration of the entire domain. Other servers in the domain are called managed servers. These are typically the servers on which you run your applications. A domain can contain any number of managed servers. You can find the detail on this link -
https://docs.oracle.com/cd/E17904_01/web.1111/e14144/tasks.htm#WLDPU136

Database and Application Server Speed Issue

I have a System which has application server and database server.
In the initial stage, both Database and Application Servers run in a same Physical Server. After that we have segregated these two servers in to separate segments in the network. i.e We have defined two separate VLAN s as application and database and put these two servers in to these two different vlans and given the required access permission through the firewall.
After the segregation we had a major issue regarding the slowness between application and db servers. We have checked the network connectivity and we couldn't find any issue from the network side for the slowness.
After that we have put both Application and DB servers in to one server like the implementation stage. Then the slowness issue has rectified.
I want to know what could be happen for this slowness.
Please advice me.
Thank you

Microsoft Azure VPN WebApp not communicating with external SQL

The problem I have is that we're trying to use our WebApp in Microsoft Azure to connect to an external SQL-database (not our own) through a VPN. The SQL-database is only allowing connections from our local IP-addresses that we put up as a Network (for example 176.0.0.0/24).
We are now connected to the same virtual private network, and through our Azure-VM we can now connect to the SQL-Server through SQL Server Management Studio.
Now we want to do the same with a WebApp, but we're not getting through to the server. It gets "Not authenticated" before reaching the SQL-Server (probably the server isn't accepting our IP from the WebApp).
The different problems I have tried to look through is:
Do we only try to connect through our Outbound IPs?
Is the WebApp not connected to the VPN?
I have unfortunatley not found any real answers, and neither any solutions to my problem. If you have any ideas of how to solve our problem, or maybe know how I could tunnel all of the SQL-calls through the VM, the help would be very much appreciated!
Hybrid connection is one option. What you can also do is enable point-to-site in your VPN. Once you do that, you can directly integrate your web app to the vnet and your connections will work. (Go to your web app -> Settings -> Networking -> VNet Integration)
If your Vnet is V1(older way of creating VNs) then enabling point to site is very straightforward. You can do it through portal. For V2 Vnets you have to do it through powershell commands.
Here is a link for the documentation which explains both the options.
https://azure.microsoft.com/en-in/documentation/articles/web-sites-integrate-with-vnet/
There's a way to "tunnel all of the SQL-calls through the VM". You may want to use hybrid connections (cf https://azure.microsoft.com/en-us/documentation/articles/integration-hybrid-connection-overview/).
The principle is to have an agent installed on the VM that can access the database with the correct IP address.
Suppose you can access the SQL DB as mysqldbsrv from the VM. You add an hybrid connection associated to your web app, you install the agent on the VM. Then, when you connect to mysqldbsrv from the Web App, you go through the VM.

Checking server status on multiple machines from C# application

I have multiple content servers on different machines. I need to check the status of every server. I'm concerned about things like disk size, priority etc.
One solution that I'm using now is to install a Window Service on each machine which regularly checks the server but I have to manually install the service on each server.
Is there any way I can get the server information like disk space from a WCF service or using a windows application? I want to create a single watcher for my servers as I have to add servers sometimes.
Look at windows WMI you can make remote calls to machines so long as you have permissions to do so. You will only have to run one service on one server that can connect to the others.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582(v=vs.85).aspx