I am trying to understand the Oracle Service Bus Load Balancing. I have:
One weblogic server 10.3.6.0, with
3 Managed servers (lb,osb1,osb2):
2 Managed servers are in cluster configuration:
osb1 - with port 7101 and
osb2 - with port 7202
The manager Server called lb was configured as proxy server with port 7301.
Using Eclipse, I have done a "Hello World" application ( I used a proxy service and wsdl). But when I go to browser with http://localhost:7301/osb-101-helloworld/HelloWorld the application is not working,
If I go to http://localhost:7001/osb-101-helloworld/HelloWorld the application works and I can see the code using ?wsdl instruction at the end of the URL. Code displays the following information:
<WL5G3N0:service name="HelloWorld">
<WL5G3N0:port binding="WL5G3N1:HelloWorldSOAP" name="HelloWorldSOAP">
<WL5G3N2:address location="http://gaia:7001/osb-101-helloworld/HelloWorld"/>
**gaia is the server name.**
The 7001 port is used by AdminServer.
I am using this blog Oracle Fusion Middleware - Oracle Service Bus & SOA Suite--Gang Of Two : OSB Clustering & Load Balancer as a guide, but I don't know how to make the "hello world" application work using correct manager server (7301 - proxyserver).
See http://docs.oracle.com/cd/E17904_01/doc.1111/e15022/cluster.htm#OSBDG164 and Appendix B that is linked from it. You need to use the WLST script or the Wizard to properly create the extended Managed Servers visible to SBConsole.
Related
I am using HA proxy version 1.6.6 for load balancing rabbitmq server, and it works fine but i want to add server dynamically in ha proxy backend in ubuntu using script. can anyone please tell me how can i done it?
HAProxy OSS v1.8 does not include add/remove commands in Runtime API, but you can achieve similar functionality by using ready/disabled state commands.
Add server(s) config in haproxy.cfg in disabled state: server-template websrv 1-100 192.168.122.1:8080 check disabled //This adds 100 servers (websrv1...websrv100) in disabled state
Enable server (similar to add feature): set server be_template/websrv1 state ready
Disable server (similar to remove feature): set server be_template/websrv1 state maint
Address and port can be changed using Runtime API as usual: set server be_template/websrv1 addr 192.168.50.112 port 8000
Reference(s):
https://www.haproxy.com/blog/dynamic-configuration-haproxy-runtime-api/
https://www.haproxy.com/blog/dynamic-scaling-for-microservices-with-runtime-api/
As far as I know haproxy api ( stats socket ) does not support dynamic adding/removing servers to backend.
One of the solution to use consul, the cost - reload service after some change.
https://www.hashicorp.com/blog/haproxy-with-consul.html
I think there is not this kind of features with HAProxy Open Source.
If you use their ALOHA Load Balancer, there is an API to do this actions here :
https://www.haproxy.com/resources/documentation/
I deployed an Asp.Net Web API project on Amazon Web Services' Elasticbeanstalk (IIS configured machine). Everything works fine except WebSocket. To test the WebSocket easier I use Simple WebSocket Client extension on Chrome.
When I make a request to the API, I get the following (error) message (I observe this message over developer console's network tab):
WebSocket connection to 'ws://my_url' failed: Error during WebSocket handshake: Unexpected response code: 400
I have not found enough information to overcome this problem.
I tried enabling all Inbound/Outbound TCP connections from all ports and all IPs under Security Groups.
I tried creating an empty Asp.Net Web API project that only has a basic sample of WebSockets (just sending a message to the connected user) and deploying it to a brand new environment and application on AWS.
Nothing has worked so far.
I am using Microsoft's WebSockets, .NET Framework 4.5.1.
What are the possible solution ways?
If you are using AWS Elastic Load Balancer in your elastic beanstalk then ELB does not support web sockets and you have to apply a work around. Change your Load Balancer top classic load balancer that supports Websockets.
https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/
I solved the problem by adding All TCP on Inbound segment of Security Groups and using the IP address of the server instead of AWS created name.
Our client has a requirement that a web server can only have port 80 and 443 open, both public and internal facing, but our application would benefit from using queuing on the inside.
Is it possible to run RabbitMQ over port 80?
Update
The setup is as follows.
We have a public facing API server which calls various back end systems.
In between the API server and the back end servers there is another layer which in most cases just works like a proxy.
Some of the back end systems, as well as the proxy layer, go up and down intermittently.
What I would like to do is have a queue on the API server, a queue in the proxy layer and a queue in the back end layer.
These queues would be federated so that a messages placed on the queue on the API server would be forwarded all the way down to the back end servers (queuing is needed for inserts and updates only).
One way is using Web-Stomp plugin and Sock.js, using nginx as proxy.
Another way - node.js callback for some sending messages, handling events and create messages with node.js.
Server side works with RabbitMQ by localhost connect with default port.
Third way is using subdomain with another IP adress.
I got 2 servers with two equal wcf services hosted on them and one client application server. I can connect to endpoints and send a requests to both services using test wcf client app (.NET Web Service Studio) from my local machine successfully. But when I am trying to connect from client application server using the same test wcf client app I successfully connected only to the one wcf service server, but I have got an error when connecting to another one:
System.Net.WebException: There was an error downloading 'https://XXX/XXX?wsdl'. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it XX.XXX.XX.XXX:443
I performed netstat -an | find "443" command in command prompt on the client server and on my local machine to find out the difference and here what I have got:
1. On my local machine:
2. On the client app server:
What I already tried to do on client application server is:
- turned off firewall;
- stopped windows firewall service
- uninstalled mcafee virusscan enterprise application.
(I tried to set "prevent mass mailing worms from send mail" first, but mcafee was in foreign language that I don't understand, so I just uninstalled it)
after running command netstat -aon | findstr "443" on client application server I have got this result:
but I still got an error.
Does anybody know how to solve this issue?
Could be the problem on the wcf service server side?
The solution was predictable simple one - firewall was blocking the port,
but it's important to notice that the issue was caused by firewall on the wcf service server side, but not on client application server, which is making the request to that service.
I asked the technical support of that server, and they made firewall changes.
After that error was disappeared.
I faced the same issue and tried different ways to fix this. Nothing works. Later i found the issue which is, the application i tried to run is https and in my IIS, https binding was not created. I created binding https with the website and it works.
I am in a situation.
We have a Windows Server 2012 on which a play application is running. This play application is listen to port 80(using built-in HTTP server). Any request sent to my server say, http://abc.testserver.com is picked up by play.
We have one more web application which is developed using php and html. This is hosted on the same server on port 81 using IIS.
So any request http://abc.testserver.com:81 will launch my php web app. But we are not comfortable to expose the port no (i.e. 81) to the users.
Is there any way we can have both the applications running on the same server without displaying the port number to the user? (say use different domain names)
Please help us with possible approach if there is any.
Thanks