Showing posts with label Cloud Load Balancer. Show all posts
Showing posts with label Cloud Load Balancer. Show all posts

Saturday, May 22, 2021

OCI Load Balancer redirection

 We all are aware that load balancers helps in distributing the requests to the backend servers based upon certain algorithms. OCI Load Balancers helps in achieving high availability and scalability. Based upon our requirement we can induce multiple policies and application level health checks in OCI Load Balancer. For information about OCI Load Balancer, you can go through Load Balancer. In this specific blog, i have tried to give the demonstration on how using Load Balancer advanced configurations such as Path Routes, Hostnames and Rule sets, we can redirect the request to specific backend server. In my earlier posts https://samappsdba.blogspot.com/2020/05/configuring-oci-load-balancer-for-ebs.html,i have explained how we can create a basic Load balancer in OCI.


I already have one public load balancer and one backend sets which comprises of two web servers webserver1 and webserver2. The web servers have the files webserver1.html and webserver2.html under the  /var/www/html path. 




As of now, if i type the public IP address of LB in the browser, it redirects me to the backend web server1 and webserver 2 as the algorithm choosen is Round Robin



And hit the ip address of the LB and it redirects me to second web server




 Upto this point Load balancer has the basic settings. Now i have two domains webserver1.tk and webserver2.tk 

The purpose would be to redirect the load to webserver1(webserver1.html) for the requests coming to webserver1.tk and redirect the load to webserver2(webserver2.html) for the requests coming to webserver2.tk. The handling of DNS queries are being served by OCI DNS Zones is out of scope for this post. I will cover the same in future posts.

First, under load balancer, i will create the specific hostnames.

Next, create 2 Path Route Set




next, create the rule sets








Now edit the listener which was created initially as part of OCI Load balancer setup and add an another listener. These two listeners will cater to two hostnames.



And then add the second listener








Now, if i hit the webserver.tk, the request is getting redirected to webserver/webserver1.html


test the same for webserver2.tk




There are many other advanced configurations which we can use with our OCI Load Balancer for which we can go through the Advanced OCI LB Config. The post was all about how using one flexible load balancer, we can serve multiple urls using hostnames, Path Routes and Rule sets. Hope this post helps someone. Keep learning cloud.














Sunday, May 24, 2020

Load balancer dns url for EBS 12.2 in OCI

This is in continuation to my previous blog https://samappsdba.blogspot.com/2020/05/configuring-oci-load-balancer-for-ebs.html. In this post, we will go through the steps on how we can customize the Oracle Cloud Load balancer public IP with a custom URL. This is important, where we don't want to expose the IP of the Oracle Cloud LB to the end user.


As per my previous post, our Oracle Cloud Load Balancer is sitting infront of the two Oracle EBS 12.2 application server and as the policy is set to weighted round robin, hitting the public ip of Oracle Cloud Load Balancer  redirects  to the first web server and next to the second web server and so forth.









Now, i am going to construct the Oracle Cloud Load balancer URL as http://ebs.ebspoc.tech. In this post, I have not covered the SSL part. It will be taken up in the future posts.

In DNS Zone management of Oracle Cloud





Now create a A record with ebs.ebspoc.tech and lb public ip 150.XX.XX.XX and cname record with www.ebs.ebspoc.tech




And publish the changes.  Once the NS are added to the Domain Provider Zone management, it will take around 24 hours to get updated. We can do a nslookup to confirm if the changes have been updated or not.






Next, we need to modify the context file of the EBS web servers to point it to the LB.

s_webentryurlprotocol-http
s_webentryhost-ebs
s_webentrydomain-ebspoc.tech
s_active_webport-8001
s_login_page—http://ebs.ebspoc.tech/OA_HTML/AppsLogin
s_external_url- http://ebs.ebspoc.tech

shut down, autoconfig and start the services.

Now type the url

http://ebs.ebspoc.tech









next post, i will show how we can enable SSL and terminate it at the load balancer. 

Hope, this post helps someone. Happy learning cloud.









Saturday, May 16, 2020

Launch Compute instance using OCI-CLI

This is continuation to my previous post of on how to set up OCI-CLI in Oracle Cloud. In this post, i am going to create a compute instance using OCI-CLI.

Before we create a compute instance in Oracle cloud, we need to have basic details in hand.

The list of cli command reference can be retrieved from:-



1. Compartment id

oci iam user list –compartment-id

2. Availability Domain

[oracle@ebsapp01 .oci]$ oci iam availability-domain list --compartment-id ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a
{
  "data": [
    {
      "compartment-id": "ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a",
      "id": "ocid1.availabilitydomain.oc1..aaaaaaaatrwxaogr7dl4yschqtrmqrdv6uzis3mgbnomiagqrfhcb7mxsfdq",
      "name": "WDMA:US-ASHBURN-AD-1"
    },
    {
      "compartment-id": "ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a",
      "id": "ocid1.availabilitydomain.oc1..aaaaaaaauvt2n7pijol7uqgdnnsoojcukrijtmcltvfwxazmitk235wyohta",
      "name": "WDMA:US-ASHBURN-AD-2"
    },
    {
      "compartment-id": "ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a",
      "id": "ocid1.availabilitydomain.oc1..aaaaaaaaztunlny6ae4yw2vghp5go2zceaonwp6wiioe3tnh2vlaxjjl2n3a",
      "name": "WDMA:US-ASHBURN-AD-3"
    }
  ]




3. Compute Shape

oci compute shape list --compartment-id ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a


4. Image list

oci compute image list --compartment-id ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4



5. Subnet id

oci network subnet list --compartment-id ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a --vcn-id ocid1.vcn.oc1.iad.amaaaaaaj6x6wyqagy3kmguyjlv3ljjbxdov7p2s667mebh6mpcqnigis6wq


Now, we have all the details. We can create a json script and pass the retrieved values generated above 

Json script can be generated using

oci compute instance launch --generate-full-command-json-input >compute_template.json


In this post, i am not going to use the json script. I am just forming the command as below:-



oci compute instance launch --availability-domain "WDMA:US-ASHBURN-AD-3" -c ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a --shape "VM.Standard.E2.1" --display-name " ebsautoscale3" --image-id ocid1.image.oc1.iad.aaaaaaaasxwd6pbz6py3shznyfxuxexiatoxse7zyd7tz4tmra27wle6ydwq --ssh-authorized-keys-file "/home/oracle/.ssh/id_rsa.pub" --subnet-id ocid1.subnet.oc1.iad.aaaaaaaawridc2p4pnlzpra2rvoijzjevxvewgx7pwjn4ma4wwyu6oo6qala



{
  "data": {
    "agent-config": {
      "is-management-disabled": false,
      "is-monitoring-disabled": false
    },
    "availability-domain": "WDMA:US-ASHBURN-AD-3",
    "compartment-id": "ocid1.compartment.oc1..aaaaaaaallneylfbz5g5l53nnbdnalamdwprd6les4fzmc22ylf2zb5diu4a",
    "dedicated-vm-host-id": null,
    "defined-tags": {},
    "display-name": " ebsautoscale3",
    "extended-metadata": {},
    "fault-domain": "FAULT-DOMAIN-1",
    "freeform-tags": {},
    "id": "ocid1.instance.oc1.iad.anuwcljsj6x6wyqcsl5v4tmkczngxzzi6wsc2wnzzkkvkx2jdx2i545ccjza",
    "image-id": "ocid1.image.oc1.iad.aaaaaaaasxwd6pbz6py3shznyfxuxexiatoxse7zyd7tz4tmra27wle6ydwq",
    "ipxe-script": null,
    "launch-mode": "PARAVIRTUALIZED",
    "launch-options": {
      "boot-volume-type": "PARAVIRTUALIZED",
      "firmware": "UEFI_64",
      "is-consistent-volume-naming-enabled": true,
      "is-pv-encryption-in-transit-enabled": false,
      "network-type": "PARAVIRTUALIZED",
      "remote-data-volume-type": "PARAVIRTUALIZED"
    },
    "lifecycle-state": "PROVISIONING",
    "metadata": {
      "ssh_authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7yczf1oJki5RnHH97Bb2GDAxkYWc0R2OTPGTAXTmbN9Nsqh0KmckgoUa86rk2B8xT2dR2gezpjOVArva53ebrm3ciWZ3kcKoETG63VNoDdXCYQWIshbAn23Yyi9TLuP03iy9FLtsPT1vWeFq1hnFtqqiSOaUX/h5mcisZRhG9CrsTv+n+2HZjnGHSyf5ocmfBvbmwFBJX+8AnNq8Vj3m7mQb9ITVaFNOOSei5x9t1Rdfk/JhX2aOEmhiVHn/a8yD6OM7t1y02uxx+aZCOAn+2PzV+/R3MGDa5X0QPLPW7G+EJ8F/ek7/tyb2TrPWv8Fs4DRidHpDHsEp/Sy2TmgKb opc@ebsapp01\n"
    },
    "region": "iad",
    "shape": "VM.Standard.E2.1",
    "shape-config": {
      "gpu-description": null,
      "gpus": 0,
      "local-disk-description": null,
      "local-disks": 0,
      "local-disks-total-size-in-gbs": null,
      "max-vnic-attachments": 2,
      "memory-in-gbs": 8.0,
      "networking-bandwidth-in-gbps": 0.7,
      "ocpus": 1.0,
      "processor-description": "2.0 GHz AMD EPYC\u2122 7551 (Naples)"
    },
    "source-details": {
      "boot-volume-size-in-gbs": null,
      "image-id": "ocid1.image.oc1.iad.aaaaaaaasxwd6pbz6py3shznyfxuxexiatoxse7zyd7tz4tmra27wle6ydwq",
      "kms-key-id": null,
      "source-type": "image"
    },
    "system-tags": {},
    "time-created": "2020-05-13T09:30:12.144000+00:00",
    "time-maintenance-reboot-due": null
  },
  "etag": "e2630b3946def3135a89744a2e7c1b97abbf177141aa014ba14ee739b1903f49",
  "opc-work-request-id": "ocid1.coreservicesworkrequest.oc1.iad.abuwcljs5gowykihovdespl5vpj3aczance5nxzxchr2krarhpj573fv4bya"
}
[oracle@ebsapp01 .ssh]$

We can verify it from the console now