Hochverfügbare LAMP-Stack auf der Fujitsu K5 IaaS-Plattform
2016-10-22
Machine-translated from English. Read the English original
Ja, ich fürchte, es ist wieder ein HEAT LAMP-Stack. Dieser Stack enthält jedoch einige der Verbesserungen, die Fujitsu für Neutron und Heat entwickelt hat. Er stellt einen Apache-Server und einen MySQL-Server in beiden Verfügbarkeitszonen bereit. Darüber hinaus werden beide AZs miteinander verknüpft, um den Replikations- und Synchronisationsverkehr zwischen diesen Servern durch die Verwendung eines Netzwerk-Connectors zu ermöglichen. Ein Load Balancer wird ebenfalls in jedem Subnetz bereitgestellt und enthält beide Apache-Server in seinem Pool.
Hinweis: Leider hatte ich keine Zeit, die Apache- oder MySQL-Skripte zu konfigurieren und zu debuggen; die Software ist lediglich installiert. Es gibt jedoch viele Artikel zu diesen Themen in der Blogosphäre – suchen Sie einfach bei Yahoo nach einigen Beispielen … lol! Außerdem sollten die Load Balancer schließlich selbst „ausgeglichen“ werden, indem ein externer HA-DNS-Dienst verwendet wird, um sicherzustellen, dass es keinen Single Point of Failure gibt.
Das folgende Diagramm zeigt die Infrastruktur, die mit dem in diesem Blog diskutierten Stack erstellt wird.

Voraussetzungen
Für eine erfolgreiche Bereitstellung dieses Stacks sind die folgenden Voraussetzungen erforderlich.
Virtuelle Router: In jeder Verfügbarkeitszone sollte ein internetverbundener virtueller Router erstellt und die mit diesen Routern verbundenen Parameter zum Stack hinzugefügt werden.

Holen Sie sich jede Router-ID, die im Beispiel-Stack geändert werden muss, und notieren Sie den Namen des externen Netzwerks, das von jedem Router verwendet wird –

Externe Netzwerke: Suchen Sie in den Gateway-Einstellungen unter Verwendung der oben identifizierten externen Netzwerknamen die Netzwerk-IDs dieser externen, auch als öffentlich bezeichneten, Netzwerke und ändern Sie diese Werte im Beispiel-Stack –

SSH-Schlüssel: Erstellen Sie in jeder Verfügbarkeitszone ein SSH-Schlüsselpaar und ändern Sie deren Namen im Beispiel-Stack –
Image: Wählen Sie das Image aus, das Sie verwenden möchten, und ändern Sie diesen Parameter im Beispiel-Stack. Hinweis: Die „UserData“-Bereitstellungsskripte innerhalb des Stacks wurden mit CentOS7.2 getestet. Wenn Sie sich entscheiden, eine andere Version des Betriebssystems bereitzustellen, ist es notwendig, diese Skripte mit den vom gewählten Betriebssystem erforderlichen Befehlen zu modifizieren.
Bereitstellung
Sobald alle diese Parameter konfiguriert sind, ist es an der Zeit, Ihren Stack zu starten, aber lassen Sie mich zunächst die Hauptabschnitte sehr kurz diskutieren –
Hier sind alle Eingabeparameter, die an Ihre Umgebung angepasst werden müssen –
Diese Datei enthält versteckte oder bidirektionale Unicode-Zeichen, die anders interpretiert oder kompiliert werden könnten als das, was unten angezeigt wird. Um sie zu überprüfen, öffnen Sie die Datei in einem Editor, der versteckte Unicode-Zeichen anzeigt.
Erfahren Sie mehr über bidirektionale Unicode-Zeichen
| # Input parameters | |
| parameters: | |
| centos_image: | |
| type: string | |
| label: Image name or ID | |
| description: Image to be used for compute instance | |
| default: "CentOS 7.2 64bit (English) 01" | |
| flavor_S2: | |
| type: string | |
| label: Flavor | |
| description: Type of instance (flavor) to be used | |
| default: "S-2" | |
| key_az_1: | |
| type: string | |
| label: Key name | |
| description: Name of key-pair to be used for compute instance | |
| default: "3t" | |
| key_az_2: | |
| type: string | |
| label: Key name | |
| description: Name of key-pair to be used for compute instance | |
| default: "demostack" | |
| public_net_az1: | |
| type: string | |
| label: external network ID | |
| description: Public network | |
| default: "df8d3f21-75f2-412a-8fd9-29de9b4a4fa8" | |
| public_net_az2: | |
| type: string | |
| label: external network ID | |
| description: Public network | |
| default: "d730db50-0e0c-4790-9972-1f6e2b8c4915" | |
| az1: | |
| type: string | |
| label: Availability Zone | |
| description: Region AZ to use | |
| default: "uk-1a" | |
| az2: | |
| type: string | |
| label: Availability Zone | |
| description: Region AZ to use | |
| default: "uk-1b" | |
| ext_router_az1: | |
| type: string | |
| label: External Router | |
| description: Router with external access for global ip allocation | |
| default: "2f6bf3f7-f74d-4cde-9015-b95b9c92d63d" | |
| ext_router_az2: | |
| type: string | |
| label: External Router | |
| description: Router with external access for global ip allocation | |
| default: "ee57a376-bab9-4e42-82e0-629e5a87b495" |
Rohdaten anzeigen
ExampleLampStack-Parameters.yml
gehostet mit ❤ von GitHub
Als Nächstes erstellen wir die beiden privaten Netzwerke, eines in jeder Verfügbarkeitszone, und verbinden sie mit ihren jeweiligen vorhandenen Routern –
Diese Datei enthält versteckte oder bidirektionale Unicode-Zeichen, die anders interpretiert oder kompiliert werden könnten als das, was unten angezeigt wird. Um sie zu überprüfen, öffnen Sie die Datei in einem Editor, der versteckte Unicode-Zeichen anzeigt.
Erfahren Sie mehr über bidirektionale Unicode-Zeichen
| # Create a private network in availability zone 1 | |
| private_net_az1: | |
| type: OS::Neutron::Net | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "private_net_az1" | |
| # Create a new subnet on the private network | |
| private_subnet_az1: | |
| type: OS::Neutron::Subnet | |
| depends_on: private_net_az1 | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "private_subnet_az1" | |
| network_id: { get_resource: private_net_az1 } | |
| cidr: "192.168.100.0/24" | |
| gateway_ip: "192.168.100.254" | |
| allocation_pools: | |
| – start: "192.168.100.100" | |
| end: "192.168.100.150" | |
| dns_nameservers: ["62.60.39.9", "62.60.39.10"] | |
| host_routes: [{"nexthop": "192.168.100.253", "destination": "10.11.200.0/24"}] | |
| # Connect an interface on the web tier network's subnet to the router | |
| az1_router_interface: | |
| type: OS::Neutron::RouterInterface | |
| depends_on: [private_subnet_az1] | |
| properties: | |
| router_id: { get_param: ext_router_az1 } | |
| subnet_id: { get_resource: private_subnet_az1 } | |
| # Create a private network in availability zone 2 | |
| private_net_az2: | |
| type: OS::Neutron::Net | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "private_net_az2" | |
| # Create a new subnet on the private network | |
| private_subnet_az2: | |
| type: OS::Neutron::Subnet | |
| depends_on: private_net_az2 | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "private_subnet_az2" | |
| network_id: { get_resource: private_net_az2 } | |
| cidr: "10.11.200.0/24" | |
| gateway_ip: "10.11.200.254" | |
| allocation_pools: | |
| – start: "10.11.200.100" | |
| end: "10.11.200.150" | |
| dns_nameservers: ["62.60.42.9", "62.60.42.10"] | |
| host_routes: [{"nexthop": "10.11.200.253", "destination": "192.168.100.0/24"}] | |
| # Connect an interface on the web tier network's subnet to the router | |
| az2_router_interface: | |
| type: OS::Neutron::RouterInterface | |
| depends_on: [private_subnet_az2] | |
| properties: | |
| router_id: { get_param: ext_router_az2 } | |
| subnet_id: { get_resource: private_subnet_az2 } |
Rohdaten anzeigen
K5LAMPNetworkSection.yml
gehostet mit ❤ von GitHub
Nun definieren wir alle Sicherheitsgruppen und Regeln, die wir im Stack verwenden möchten. Hinweis: Die Sicherheitsgruppen wurden zur einfachen Testbarkeit „offen gelassen“. Bitte stellen Sie sicher, dass Sie diese in einer Produktionsumgebung einschränken, um die Sicherheit zu verbessern –
Diese Datei enthält versteckte oder bidirektionale Unicode-Zeichen, die anders interpretiert oder kompiliert werden könnten als das, was unten angezeigt wird. Um sie zu überprüfen, öffnen Sie die Datei in einem Editor, der versteckte Unicode-Zeichen anzeigt.
Erfahren Sie mehr über bidirektionale Unicode-Zeichen
| # Create a security group | |
| server_security_group1: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: Apache | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group2: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: MySQL | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group3: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: LBaaS_AZ1 | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group4: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: LBaaS_AZ2 | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group5: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: JumpBox | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp |
Rohdaten anzeigen
K5SecurityGroupSection.yml
gehostet mit ❤ von GitHub
Als Nächstes definieren wir unsere beiden Load Balancer und beachten Sie die Verwendung der Anweisung „depends_on“ hier, um sicherzustellen, dass diese nicht erstellt werden, bevor die beiden Apache-Server erstellt sind, da deren Details eine Voraussetzung für die Erstellung des Load Balancers sind –
Diese Datei enthält versteckte oder bidirektionale Unicode-Zeichen, die anders interpretiert oder kompiliert werden könnten als das, was unten angezeigt wird. Um sie zu überprüfen, öffnen Sie die Datei in einem Editor, der versteckte Unicode-Zeichen anzeigt.
Erfahren Sie mehr über bidirektionale Unicode-Zeichen
| # AZ 1 Load Balancer | |
| LAMP_Demo_AZ1_LBaaS: | |
| type: FCX::ExpandableLoadBalancer::LoadBalancer | |
| depends_on: [ server1,server2 ] | |
| properties: | |
| Subnets: [{get_resource: private_subnet_az1}] | |
| Instances: [{get_resource: server1},{get_resource: server2}] | |
| Listeners: | |
| – {LoadBalancerPort: '80', | |
| InstancePort: '80', | |
| Protocol: 'HTTP', | |
| InstanceProtocol: 'HTTP' } | |
| HealthCheck: {Target: 'HTTP:80/healthcheck', | |
| HealthyThreshold: '3', | |
| UnhealthyThreshold: '5', | |
| Interval: '30', | |
| Timeout: '5'} | |
| Version: 2014-09-30 | |
| Scheme: public | |
| LoadBalancerName: LBaaSAZ1 | |
| SecurityGroups: [ {get_resource: server_security_group3} ] | |
| # AZ 2 Load Balancer | |
| LAMP_Demo_AZ2_LBaaS: | |
| type: FCX::ExpandableLoadBalancer::LoadBalancer | |
| depends_on: [ server1,server2 ] | |
| properties: | |
| Subnets: [{get_resource: private_subnet_az2}] | |
| Instances: [{get_resource: server1},{get_resource: server2}] | |
| Listeners: | |
| – {LoadBalancerPort: '80', | |
| InstancePort: '80', | |
| Protocol: 'HTTP', | |
| InstanceProtocol: 'HTTP' } | |
| HealthCheck: {Target: 'HTTP:80/healthcheck', | |
| HealthyThreshold: '3', | |
| UnhealthyThreshold: '5', | |
| Interval: '30', | |
| Timeout: '5'} | |
| Version: 2014-09-30 | |
| Scheme: public | |
| LoadBalancerName: LBaaSAZ2 | |
| SecurityGroups: [ {get_resource: server_security_group4} ] |
Rohdaten anzeigen
TwoLoadBalancersExample.yml
gehostet mit ❤ von GitHub
Nun definieren wir alle unsere Server, die aus einer Jump-Box bestehen, der wir eine globale (floating) IP-Adresse zuweisen, 2 Servern mit geladener Web-Software und schließlich zwei Servern mit geladenem MySQL. Beachten Sie, dass ich absichtlich überall statische IP-Adressen definiert habe, da dieses Verfahren online nicht an vielen Stellen veröffentlicht wurde. Dies ist Overkill, und Sie könnten einfach DHCP verwenden, wenn Sie möchten. Produktionsumgebungen scheinen aus irgendeinem seltsamen Grund Konsistenz und Wiederholbarkeit zu bevorzugen 😉 Hat jemand jemals von CI/CD-Flows gehört.
Diese Datei enthält versteckte oder bidirektionale Unicode-Zeichen, die anders interpretiert oder kompiliert werden könnten als das, was unten angezeigt wird. Um sie zu überprüfen, öffnen Sie die Datei in einem Editor, der versteckte Unicode-Zeichen anzeigt.
Erfahren Sie mehr über bidirektionale Unicode-Zeichen
| ################### JumpBox – AZ 1 ############################################################################## | |
| # Create a new port for the server interface, assign an ip address and security group | |
| jump-server-port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group5 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group5 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.5' | |
| # Allocate a floating/global ip address | |
| jump-server-floating-ip: | |
| type: OS::Neutron::FloatingIP | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| floating_network_id: { get_param: public_net_az1 } | |
| # Assign a floating/global ip address to the fixed server ip address | |
| jump-server-floating-ip-association: | |
| type: OS::Neutron::FloatingIPAssociation | |
| depends_on: jump-server-floating-ip | |
| properties: | |
| floatingip_id: { get_resource: jump-server-floating-ip } | |
| port_id: { get_resource: jump-server-port } | |
| # Create a system volume for use with the server | |
| jump-sys-vol: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "LAMP-JumpBox-AZ1" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| jump-server: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server-port ] | |
| properties: | |
| key_name: { get_param: key_az_1 } | |
| image: { get_param: centos_image } | |
| flavor: "S-1" | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: jump-sys-vol}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "LAMP-JumpBox-AZ1" | |
| networks: | |
| – port: { get_resource: jump-server-port } | |
| ########################################################################################################## | |
| ################### WebServers – AZ 1 ############################################################################## | |
| # Create a new port for the server interface, assign an ip address and security group | |
| server1_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group1 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group1 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.10' | |
| # Create a system volume for use with the server | |
| sys-vol1: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "web-az1-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server1: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server1_port,sys-vol1 ] | |
| properties: | |
| key_name: { get_param: key_az_1 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol1}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Apache-AZ1" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo yum install httpd -y | |
| sudo systemctl start httpd.service | |
| sudo systemctl enable httpd.service | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql -y | |
| sudo yum install php php-pear -y | |
| sudo yum install php-mysql -y | |
| sudo yum install lua lua-devel pkgconfig gcc asciidoc -y | |
| sudo wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm | |
| sudo rpm -iUvh epel-release-7-8.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install lsyncd -y | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server1_port } | |
| ########################################################################################################### | |
| ################### WebServers – AZ 2 ############################################################################## | |
| server2_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group1 ] | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| network_id: { get_resource: private_net_az2 } | |
| security_groups: [{ get_resource: server_security_group1 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az2 } | |
| ip_address: '10.11.200.10' | |
| # Create a system volume for use with the server | |
| sys-vol2: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "web-az2-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server2: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server2_port,sys-vol2 ] | |
| properties: | |
| key_name: { get_param: key_az_2 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol2}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Apache-AZ2" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo yum install httpd -y | |
| sudo systemctl start httpd.service | |
| sudo systemctl enable httpd.service | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql -y | |
| sudo yum install php php-pear -y | |
| sudo yum install php-mysql -y | |
| sudo yum install lua lua-devel pkgconfig gcc asciidoc -y | |
| sudo wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm | |
| sudo rpm -iUvh epel-release-7-8.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install lsyncd -y | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server2_port } | |
| ########################################################################################################### | |
| ################### DatabaseServers – AZ 1 ############################################################################## | |
| # Create a new port for the server interface, assign an ip address and security group | |
| server3_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.30' | |
| # Create a system volume for use with the server | |
| sys-vol3: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "db-az1-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server3: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server3_port,sys-vol3 ] | |
| properties: | |
| key_name: { get_param: key_az_1 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol3}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Database-AZ1" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql-server -y | |
| sudo systemctl start mysqld | |
| sudo systemctl enable mysqld | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server3_port } | |
| ########################################################################################################### | |
| ################### DatabaseServers – AZ 2 ################################################################ | |
| # Create a new port for the server interface, assign an ip address and security group | |
| server4_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| network_id: { get_resource: private_net_az2 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az2 } | |
| ip_address: '10.11.200.30' | |
| # Create a system volume for use with the server | |
| sys-vol4: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "db-az2-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server4: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server4_port,sys-vol4 ] | |
| properties: | |
| key_name: { get_param: key_az_2 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol4}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Database-AZ2" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql-server -y | |
| sudo systemctl start mysqld | |
| sudo systemctl enable mysqld | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server4_port } | |
| ########################################################################################################### |
Rohdaten anzeigen
K5LAMPExampleServersSection.yml
gehostet mit ❤ von GitHub
Schließlich haben wir den Abschnitt für den Netzwerk-Connector. Dies bildet die Layer-3-Verbindung zwischen den beiden Subnetzen in den verschiedenen Verfügbarkeitszonen. Dies ist die Verbindung, die den gesamten Replikations- und Synchronisationsverkehr zwischen den Servern trägt. Logisch wäre es wahrscheinlich besser gewesen, dies in den Netzwerkteil dieses Beitrags zu verschieben, aber ich wage es nicht, es jetzt zu ändern, aus Angst, einen Tippfehler einzuführen, und ich habe keine Zeit, es erneut zu testen – was derzeit auf GitHub funktioniert, funktioniert 🙂
Diese Datei enthält versteckte oder bidirektionale Unicode-Zeichen, die anders interpretiert oder kompiliert werden könnten als das, was unten angezeigt wird. Um sie zu überprüfen, öffnen Sie die Datei in einem Editor, der versteckte Unicode-Zeichen anzeigt.
Erfahren Sie mehr über bidirektionale Unicode-Zeichen
| ############################### AZ Interconnect ########################################################### | |
| az1_nc_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.253' | |
| az2_nc_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| network_id: { get_resource: private_net_az2 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az2 } | |
| ip_address: '10.11.200.253' | |
| az1_network_connector: | |
| type: FCX::Neutron::NetworkConnector | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| name: "LAMP-Demo-NC" | |
| az1_nc_endpoint: | |
| type: FCX::Neutron::NetworkConnectorEndpoint | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| endpoint_type: "availability_zone" | |
| name: "AZ1-NC-EP" | |
| network_connector_id: { get_resource: az1_network_connector } | |
| location: { get_param: az1 } | |
| az2_nc_endpoint: | |
| type: FCX::Neutron::NetworkConnectorEndpoint | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| endpoint_type: "availability_zone" | |
| name: "AZ2-NC-EP" | |
| network_connector_id: { get_resource: az1_network_connector } | |
| location: { get_param: az2 } | |
| az1_endpoint_connection: | |
| type: FCX::Neutron::NetworkConnectorEndpointConnection | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| port_id: { get_resource: az1_nc_port } | |
| network_connector_endpoint_id: { get_resource: az1_nc_endpoint } | |
| az2_endpoint_connection: | |
| type: FCX::Neutron::NetworkConnectorEndpointConnection | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| port_id: { get_resource: az2_nc_port } | |
| network_connector_endpoint_id: { get_resource: az2_nc_endpoint } |
Rohdaten anzeigen
K5NetworkConnectorExample.yml
gehostet mit ❤ von GitHub
Falls Sie noch nicht direkt zu GitHub gegangen sind, hier ist, was Sie herunterladen und in einem einfachen Gist ausprobieren möchten –
Diese Datei enthält versteckte oder bidirektionale Unicode-Zeichen, die anders interpretiert oder kompiliert werden könnten als das, was unten angezeigt wird. Um sie zu überprüfen, öffnen Sie die Datei in einem Editor, der versteckte Unicode-Zeichen anzeigt.
Erfahren Sie mehr über bidirektionale Unicode-Zeichen
| heat_template_version: 2013-05-23 | |
| # Author: Graham Land | |
| # Date: 21/10/2016 | |
| # Purpose: Multi-Availability-Zone template to demonstrate the basic format/usage of HOT stacks on our Fujitsu K5 platform | |
| # It builds a webserver and database server in AZ1 and then the same infrastructure again in AZ2. | |
| # These two environmnets are then joined using a network connector to facilitate data replication between the applications. | |
| # Two public facing load balancers are also deployed – one in each AZ – and the webservers are added to each of these. | |
| # | |
| # The webservers have apache, php, mysql-client and lsyncd installed but NOT configured – didn't have time for this script sorry – loads of examples available online | |
| # The database servers have mysql installed but not configured – again lots of examples available online – can be easily setup in Master/Master mode | |
| # Once the web application is installed use Lsyncd to provide Master/Slave sync between the apache servers. | |
| # | |
| # I'm not a LAMP expert there are many different ways of implementing the above software components the goal of this stack is to illustrate | |
| # a highly available infrastructure solution – please adjust to taste e.g. GlusterFS instead of Lsync, Galera MySQL Cluster software etc… | |
| # Twitter: @allthingsclowd | |
| # Blog: https://allthingscloud.eu | |
| description: Yes I'm afraid it's yet another LAMP HEAT stack – this time though it's a multi-AZ deployment on Fujitsu K5 IaaS | |
| # Input parameters | |
| parameters: | |
| centos_image: | |
| type: string | |
| label: Image name or ID | |
| description: Image to be used for compute instance | |
| default: "CentOS 7.2 64bit (English) 01" | |
| flavor_S2: | |
| type: string | |
| label: Flavor | |
| description: Type of instance (flavor) to be used | |
| default: "S-2" | |
| key_az_1: | |
| type: string | |
| label: Key name | |
| description: Name of key-pair to be used for compute instance | |
| default: "3t" | |
| key_az_2: | |
| type: string | |
| label: Key name | |
| description: Name of key-pair to be used for compute instance | |
| default: "demostack" | |
| public_net_az1: | |
| type: string | |
| label: external network ID | |
| description: Public network | |
| default: "df8d3f21-75f2-412a-8fd9-29de9b4a4fa8" | |
| public_net_az2: | |
| type: string | |
| label: external network ID | |
| description: Public network | |
| default: "d730db50-0e0c-4790-9972-1f6e2b8c4915" | |
| az1: | |
| type: string | |
| label: Availability Zone | |
| description: Region AZ to use | |
| default: "uk-1a" | |
| az2: | |
| type: string | |
| label: Availability Zone | |
| description: Region AZ to use | |
| default: "uk-1b" | |
| ext_router_az1: | |
| type: string | |
| label: External Router | |
| description: Router with external access for global ip allocation | |
| default: "2f6bf3f7-f74d-4cde-9015-b95b9c92d63d" | |
| ext_router_az2: | |
| type: string | |
| label: External Router | |
| description: Router with external access for global ip allocation | |
| default: "ee57a376-bab9-4e42-82e0-629e5a87b495" | |
| # K5 Infrastructure resources to be built | |
| resources: | |
| # Create a private network in availability zone 1 | |
| private_net_az1: | |
| type: OS::Neutron::Net | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "private_net_az1" | |
| # Create a new subnet on the private network | |
| private_subnet_az1: | |
| type: OS::Neutron::Subnet | |
| depends_on: private_net_az1 | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "private_subnet_az1" | |
| network_id: { get_resource: private_net_az1 } | |
| cidr: "192.168.100.0/24" | |
| gateway_ip: "192.168.100.254" | |
| allocation_pools: | |
| – start: "192.168.100.100" | |
| end: "192.168.100.150" | |
| dns_nameservers: ["62.60.39.9", "62.60.39.10"] | |
| host_routes: [{"nexthop": "192.168.100.253", "destination": "10.11.200.0/24"}] | |
| # Connect an interface on the web tier network's subnet to the router | |
| az1_router_interface: | |
| type: OS::Neutron::RouterInterface | |
| depends_on: [private_subnet_az1] | |
| properties: | |
| router_id: { get_param: ext_router_az1 } | |
| subnet_id: { get_resource: private_subnet_az1 } | |
| # Create a private network in availability zone 2 | |
| private_net_az2: | |
| type: OS::Neutron::Net | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "private_net_az2" | |
| # Create a new subnet on the private network | |
| private_subnet_az2: | |
| type: OS::Neutron::Subnet | |
| depends_on: private_net_az2 | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "private_subnet_az2" | |
| network_id: { get_resource: private_net_az2 } | |
| cidr: "10.11.200.0/24" | |
| gateway_ip: "10.11.200.254" | |
| allocation_pools: | |
| – start: "10.11.200.100" | |
| end: "10.11.200.150" | |
| dns_nameservers: ["62.60.42.9", "62.60.42.10"] | |
| host_routes: [{"nexthop": "10.11.200.253", "destination": "192.168.100.0/24"}] | |
| # Connect an interface on the web tier network's subnet to the router | |
| az2_router_interface: | |
| type: OS::Neutron::RouterInterface | |
| depends_on: [private_subnet_az2] | |
| properties: | |
| router_id: { get_param: ext_router_az2 } | |
| subnet_id: { get_resource: private_subnet_az2 } | |
| # Create a security group | |
| server_security_group1: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: Apache | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group2: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: MySQL | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group3: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: LBaaS_AZ1 | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group4: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: LBaaS_AZ2 | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # Create a security group | |
| server_security_group5: | |
| type: OS::Neutron::SecurityGroup | |
| properties: | |
| description: Add security group rules for server | |
| name: JumpBox | |
| rules: | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: tcp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: udp | |
| port_range_min: 1 | |
| port_range_max: 65535 | |
| – remote_ip_prefix: 0.0.0.0/0 | |
| protocol: icmp | |
| # AZ 1 Load Balancer | |
| LAMP_Demo_AZ1_LBaaS: | |
| type: FCX::ExpandableLoadBalancer::LoadBalancer | |
| depends_on: [ server1,server2 ] | |
| properties: | |
| Subnets: [{get_resource: private_subnet_az1}] | |
| Instances: [{get_resource: server1},{get_resource: server2}] | |
| Listeners: | |
| – {LoadBalancerPort: '80', | |
| InstancePort: '80', | |
| Protocol: 'HTTP', | |
| InstanceProtocol: 'HTTP' } | |
| HealthCheck: {Target: 'HTTP:80/healthcheck', | |
| HealthyThreshold: '3', | |
| UnhealthyThreshold: '5', | |
| Interval: '30', | |
| Timeout: '5'} | |
| Version: 2014-09-30 | |
| Scheme: public | |
| LoadBalancerName: LBaaSAZ1 | |
| SecurityGroups: [ {get_resource: server_security_group3} ] | |
| # AZ 2 Load Balancer | |
| LAMP_Demo_AZ2_LBaaS: | |
| type: FCX::ExpandableLoadBalancer::LoadBalancer | |
| depends_on: [ server1,server2 ] | |
| properties: | |
| Subnets: [{get_resource: private_subnet_az2}] | |
| Instances: [{get_resource: server1},{get_resource: server2}] | |
| Listeners: | |
| – {LoadBalancerPort: '80', | |
| InstancePort: '80', | |
| Protocol: 'HTTP', | |
| InstanceProtocol: 'HTTP' } | |
| HealthCheck: {Target: 'HTTP:80/healthcheck', | |
| HealthyThreshold: '3', | |
| UnhealthyThreshold: '5', | |
| Interval: '30', | |
| Timeout: '5'} | |
| Version: 2014-09-30 | |
| Scheme: public | |
| LoadBalancerName: LBaaSAZ2 | |
| SecurityGroups: [ {get_resource: server_security_group4} ] | |
| ################### JumpBox – AZ 1 ############################################################################## | |
| # Create a new port for the server interface, assign an ip address and security group | |
| jump-server-port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group5 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group5 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.5' | |
| # Allocate a floating/global ip address | |
| jump-server-floating-ip: | |
| type: OS::Neutron::FloatingIP | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| floating_network_id: { get_param: public_net_az1 } | |
| # Assign a floating/global ip address to the fixed server ip address | |
| jump-server-floating-ip-association: | |
| type: OS::Neutron::FloatingIPAssociation | |
| depends_on: jump-server-floating-ip | |
| properties: | |
| floatingip_id: { get_resource: jump-server-floating-ip } | |
| port_id: { get_resource: jump-server-port } | |
| # Create a system volume for use with the server | |
| jump-sys-vol: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "LAMP-JumpBox-AZ1" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| jump-server: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server-port ] | |
| properties: | |
| key_name: { get_param: key_az_1 } | |
| image: { get_param: centos_image } | |
| flavor: "S-1" | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: jump-sys-vol}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "LAMP-JumpBox-AZ1" | |
| networks: | |
| – port: { get_resource: jump-server-port } | |
| ########################################################################################################## | |
| ################### WebServers – AZ 1 ############################################################################## | |
| # Create a new port for the server interface, assign an ip address and security group | |
| server1_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group1 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group1 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.10' | |
| # Create a system volume for use with the server | |
| sys-vol1: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "web-az1-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server1: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server1_port,sys-vol1 ] | |
| properties: | |
| key_name: { get_param: key_az_1 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol1}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Apache-AZ1" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo yum install httpd -y | |
| sudo systemctl start httpd.service | |
| sudo systemctl enable httpd.service | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql -y | |
| sudo yum install php php-pear -y | |
| sudo yum install php-mysql -y | |
| sudo yum install lua lua-devel pkgconfig gcc asciidoc -y | |
| sudo wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm | |
| sudo rpm -iUvh epel-release-7-8.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install lsyncd -y | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server1_port } | |
| ########################################################################################################### | |
| ################### WebServers – AZ 2 ############################################################################## | |
| server2_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group1 ] | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| network_id: { get_resource: private_net_az2 } | |
| security_groups: [{ get_resource: server_security_group1 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az2 } | |
| ip_address: '10.11.200.10' | |
| # Create a system volume for use with the server | |
| sys-vol2: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "web-az2-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server2: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server2_port,sys-vol2 ] | |
| properties: | |
| key_name: { get_param: key_az_2 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol2}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Apache-AZ2" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo yum install httpd -y | |
| sudo systemctl start httpd.service | |
| sudo systemctl enable httpd.service | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql -y | |
| sudo yum install php php-pear -y | |
| sudo yum install php-mysql -y | |
| sudo yum install lua lua-devel pkgconfig gcc asciidoc -y | |
| sudo wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm | |
| sudo rpm -iUvh epel-release-7-8.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install lsyncd -y | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server2_port } | |
| ########################################################################################################### | |
| ################### DatabaseServers – AZ 1 ############################################################################## | |
| # Create a new port for the server interface, assign an ip address and security group | |
| server3_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.30' | |
| # Create a system volume for use with the server | |
| sys-vol3: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| name: "db-az1-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server3: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server3_port,sys-vol3 ] | |
| properties: | |
| key_name: { get_param: key_az_1 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol3}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Database-AZ1" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql-server -y | |
| sudo systemctl start mysqld | |
| sudo systemctl enable mysqld | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server3_port } | |
| ########################################################################################################### | |
| ################### DatabaseServers – AZ 2 ################################################################ | |
| # Create a new port for the server interface, assign an ip address and security group | |
| server4_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| network_id: { get_resource: private_net_az2 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az2 } | |
| ip_address: '10.11.200.30' | |
| # Create a system volume for use with the server | |
| sys-vol4: | |
| type: OS::Cinder::Volume | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| name: "db-az2-boot-vol" | |
| size: 30 | |
| volume_type: "M1" | |
| image : { get_param: centos_image } | |
| # Build a server using the system volume defined above | |
| server4: | |
| type: OS::Nova::Server | |
| depends_on: [ jump-server,server4_port,sys-vol4 ] | |
| properties: | |
| key_name: { get_param: key_az_2 } | |
| image: { get_param: centos_image } | |
| flavor: { get_param: flavor_S2 } | |
| admin_user: k5user | |
| block_device_mapping: [{"volume_size": "30", "volume_id": {get_resource: sys-vol4}, "delete_on_termination": True, "device_name": "/dev/vda"}] | |
| name: "Database-AZ2" | |
| user_data_format: RAW | |
| user_data: | |
| str_replace: | |
| template: | |
| #!/bin/bash | |
| sudo yum update -y | |
| sudo yum install wget -y | |
| sudo wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm | |
| sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm | |
| sudo yum update -y | |
| sudo yum install mysql-server -y | |
| sudo systemctl start mysqld | |
| sudo systemctl enable mysqld | |
| echo message | |
| params: | |
| message: "Installation Complete" | |
| networks: | |
| – port: { get_resource: server4_port } | |
| ########################################################################################################### | |
| ############################### AZ Interconnect ########################################################### | |
| az1_nc_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az1 } | |
| network_id: { get_resource: private_net_az1 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az1 } | |
| ip_address: '192.168.100.253' | |
| az2_nc_port: | |
| type: OS::Neutron::Port | |
| depends_on: [ server_security_group2 ] | |
| properties: | |
| availability_zone: { get_param: az2 } | |
| network_id: { get_resource: private_net_az2 } | |
| security_groups: [{ get_resource: server_security_group2 }] | |
| fixed_ips: | |
| – subnet_id: { get_resource: private_subnet_az2 } | |
| ip_address: '10.11.200.253' | |
| az1_network_connector: | |
| type: FCX::Neutron::NetworkConnector | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| name: "LAMP-Demo-NC" | |
| az1_nc_endpoint: | |
| type: FCX::Neutron::NetworkConnectorEndpoint | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| endpoint_type: "availability_zone" | |
| name: "AZ1-NC-EP" | |
| network_connector_id: { get_resource: az1_network_connector } | |
| location: { get_param: az1 } | |
| az2_nc_endpoint: | |
| type: FCX::Neutron::NetworkConnectorEndpoint | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| endpoint_type: "availability_zone" | |
| name: "AZ2-NC-EP" | |
| network_connector_id: { get_resource: az1_network_connector } | |
| location: { get_param: az2 } | |
| az1_endpoint_connection: | |
| type: FCX::Neutron::NetworkConnectorEndpointConnection | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| port_id: { get_resource: az1_nc_port } | |
| network_connector_endpoint_id: { get_resource: az1_nc_endpoint } | |
| az2_endpoint_connection: | |
| type: FCX::Neutron::NetworkConnectorEndpointConnection | |
| depends_on: [ az1_nc_port,az2_nc_port ] | |
| properties: | |
| port_id: { get_resource: az2_nc_port } | |
| network_connector_endpoint_id: { get_resource: az2_nc_endpoint } |
Rohdaten anzeigen
FujitsuK5HA_LAMP_Stack.yml
gehostet mit ❤ von GitHub
Speichern Sie die obige Datei auf Ihrer lokalen Festplatte, und sobald Sie die zuvor beschriebenen Parameter geändert haben, starten Sie den Stack aus der K5-GUI, indem Sie die Dateioption auswählen. Nach einigen Minuten sollten Sie ungefähr so etwas erhalten –

Nun müssen Sie sich nur noch anmelden und Ihre Software konfigurieren – wie bereits erwähnt, ja, Sie können ALLES oben Genannte automatisieren, aber mein Fokus hier liegt darauf, die K5-Infrastrukturkomponenten zu demonstrieren.
Viel Spaß beim Stapeln!
Originally published on allthingscloud.eu (2016-10-22).