Files
iac-sei/sei_public_load_balancer.tf
Guilherme Silva d16ddace1f Minor fix
2026-09-01 13:31:19 -03:00

230 lines
9.4 KiB
HCL
Executable File

resource "oci_load_balancer_load_balancer" "sei_load_balancer_public" {
compartment_id = var.ocid_compartment_networking
display_name = "${var.load_balancer_prefix_hostname}-${var.environment}-public"
shape = "flexible"
subnet_ids = [ var.ocid_subnet_public ]
is_delete_protection_enabled = "false"
is_private = "false"
network_security_group_ids = [ oci_core_network_security_group.load-balancer-public-nsg.id ]
shape_details {
maximum_bandwidth_in_mbps = var.load_balancer_maximum_bandwidth_in_mbps
minimum_bandwidth_in_mbps = var.load_balancer_minimum_bandwidth_in_mbps
}
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_backend_set" "backend_set_sei_servers" {
health_checker {
protocol = "HTTP"
interval_ms = "10000"
port = "80"
retries = "3"
return_code = "302"
timeout_in_millis = "3000"
url_path = "/"
}
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "bs-sei-servers"
policy = "IP_HASH"
session_persistence_configuration {
cookie_name = "PHPSESSID-SEI"
}
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_backend_set" "backend_set_sip_servers" {
health_checker {
protocol = "HTTP"
interval_ms = "10000"
port = "80"
retries = "3"
return_code = "302"
timeout_in_millis = "3000"
url_path = "/"
}
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "bs-sip-servers"
policy = "IP_HASH"
session_persistence_configuration {
cookie_name = "PHPSESSID-SIP"
}
}
resource "oci_load_balancer_backend_set" "backend_set_solr_servers" {
health_checker {
protocol = "HTTP"
interval_ms = "10000"
port = "8983"
retries = "3"
return_code = "302"
timeout_in_millis = "3000"
url_path = "/solr"
}
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "bs-solr-servers"
policy = "IP_HASH"
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_backend" "sip_servers" {
for_each = { for idx, inst in oci_core_instance.sip-instance : idx => inst }
backendset_name = oci_load_balancer_backend_set.backend_set_sip_servers.name
ip_address = each.value.private_ip
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
port = "80"
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_backend" "sei_servers" {
for_each = { for idx, inst in oci_core_instance.sei-instance : idx => inst }
backendset_name = oci_load_balancer_backend_set.backend_set_sei_servers.name
ip_address = each.value.private_ip
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
port = "80"
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_backend" "solr_servers" {
for_each = { for idx, inst in oci_core_instance.solr-instance : idx => inst }
backendset_name = oci_load_balancer_backend_set.backend_set_solr_servers.name
ip_address = each.value.private_ip
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
port = "8983"
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_listener" "lister_http_sei" {
default_backend_set_name = oci_load_balancer_backend_set.backend_set_sei_servers.name
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "listener-sei"
port = "80"
protocol = "HTTP"
hostname_names = [ oci_load_balancer_hostname.sei_hostname.name ]
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_listener" "lister_http_sip" {
default_backend_set_name = oci_load_balancer_backend_set.backend_set_sip_servers.name
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "listener-sip"
port = "80"
protocol = "HTTP"
hostname_names = [ oci_load_balancer_hostname.sip_hostname.name ]
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_listener" "lister_solr" {
default_backend_set_name = oci_load_balancer_backend_set.backend_set_solr_servers.name
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "listener-solr"
port = "8983"
protocol = "HTTP"
hostname_names = [ oci_load_balancer_hostname.solr_hostname.name ]
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_load_balancer_hostname" "sei_hostname" {
hostname = var.sei_fqdn
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "sei-fqdn"
}
resource "oci_load_balancer_hostname" "sip_hostname" {
hostname = var.sip_fqdn
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "sip-fqdn"
}
resource "oci_load_balancer_hostname" "solr_hostname" {
hostname = var.solr_fqdn
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "solr-fqdn"
}
#------------------------------------------------------------------------------------------------------------------------------------------------
resource "oci_logging_log" "lb_access_log" {
display_name = "${oci_load_balancer_load_balancer.sei_load_balancer_public.display_name}-access-log"
log_group_id = oci_logging_log_group.sei_log_group.id
log_type = "SERVICE"
configuration {
source {
source_type = "OCISERVICE"
service = "loadbalancer"
resource = oci_load_balancer_load_balancer.sei_load_balancer_public.id
category = "access"
}
}
is_enabled = true
retention_duration = 30
}
resource "oci_logging_log" "lb_error_log" {
display_name = "${oci_load_balancer_load_balancer.sei_load_balancer_public.display_name}-error-log"
log_group_id = oci_logging_log_group.sei_log_group.id
log_type = "SERVICE"
configuration {
source {
source_type = "OCISERVICE"
service = "loadbalancer"
resource = oci_load_balancer_load_balancer.sei_load_balancer_public.id
category = "error"
}
}
is_enabled = true
retention_duration = 30
}
# resource "oci_load_balancer_listener" "lister_sei_https" {
# default_backend_set_name = oci_load_balancer_backend_set.backend_set_sei_apps.name
# load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
# name = "listener-sei-https"
# port = "443"
# protocol = "HTTP"
# hostname_names = [ oci_load_balancer_hostname.sei_hostname.name ]
# ssl_configuration {
# certificate_ids = [ "ocid1.certificate.oc1.sa-saopaulo-1.amaaaaaaz63sg4iagucp6pedtfwbxd3oxud5ds7atsgsf2a6lwi6c5nnv7va" ]
# protocols = [ "TLSv1.2", "TLSv1.3" ]
# cipher_suite_name = "oci-default-ssl-cipher-suite-v1"
# verify_peer_certificate = "false"
# verify_depth = "1"
# }
# rule_set_names = [ oci_load_balancer_rule_set.redirectHttpToHttps.name ]
# }
#
# resource "oci_load_balancer_listener" "lister_sip_https" {
# default_backend_set_name = oci_load_balancer_backend_set.backend_set_sip_apps.name
# load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
# name = "listener-sip-https"
# port = "443"
# protocol = "HTTP"
# hostname_names = [ oci_load_balancer_hostname.sip_hostname.name ]
# ssl_configuration {
# certificate_ids = [ "ocid1.certificate.oc1.sa-saopaulo-1.amaaaaaaz63sg4iagucp6pedtfwbxd3oxud5ds7atsgsf2a6lwi6c5nnv7va" ]
# protocols = [ "TLSv1.2", "TLSv1.3" ]
# cipher_suite_name = "oci-default-ssl-cipher-suite-v1"
# verify_peer_certificate = "false"
# verify_depth = "1"
# }
# }
##-----
resource "oci_load_balancer_rule_set" "redirectHttpToHttps" {
count = var.load_balancer_enable_https == "true" ? 1 : 0
items {
action = "REDIRECT"
conditions {
#Required
attribute_name = "PATH"
attribute_value = "/"
#Optional
operator = "FORCE_LONGEST_PREFIX_MATCH"
}
redirect_uri {
protocol = "HTTPS"
host = "{host}"
port = 443
path = "/{path}"
query = "?{query}"
}
response_code = 302
}
load_balancer_id = oci_load_balancer_load_balancer.sei_load_balancer_public.id
name = "redirect_http_to_https"
}