This is a diagram to deploy FortiGate HA by using CloudFormation on AWS.
![](https://tungle.ca/wp-content/uploads/2022/03/image-273.png)
Create a new VPC.
![](https://tungle.ca/wp-content/uploads/2022/03/image-184.png)
Create a public subnet.
![](https://tungle.ca/wp-content/uploads/2022/03/image-185.png)
Create a private subnet.
![](https://tungle.ca/wp-content/uploads/2022/03/image-187.png)
Create a subnet for Synchronization between both FGs.
![](https://tungle.ca/wp-content/uploads/2022/03/image-189.png)
Create a new subnet for FortiGate management.
![](https://tungle.ca/wp-content/uploads/2022/03/image-190.png)
Public subnet: 10.0.0.0/24
Private subnet: 10.0.1.0/24
FGSync subnet: 10.0.3.0/24
FGHA mgmt subnet: 10.0.4.0/24
![](https://tungle.ca/wp-content/uploads/2022/03/image-191-1024x397.png)
Create a new Internet gateway, and attach it to your VPC.
![](https://tungle.ca/wp-content/uploads/2022/03/image-192.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-193.png)
Create a new public route.
![](https://tungle.ca/wp-content/uploads/2022/03/image-195-1024x430.png)
Edit the public route, and add a new default route to your internet gateway.
![](https://tungle.ca/wp-content/uploads/2022/03/image-196-1024x350.png)
Associate both public and HAmgmt subnet into the public route.
![](https://tungle.ca/wp-content/uploads/2022/03/image-197-1024x460.png)
Create a new key pair.
![](https://tungle.ca/wp-content/uploads/2022/03/image-207.png)
Create a new bucket, and leave the settings by default.
![](https://tungle.ca/wp-content/uploads/2022/03/image-198.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-199.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-200-1024x483.png)
Go to the GitHub of Fortinet, and download a json file for the existing VPC as a screenshot below.
https://github.com/fortinet/aws-cloudformation-templates/tree/main/FGCP/7.0/SingleAZ
![](https://tungle.ca/wp-content/uploads/2022/03/image-201-1024x688.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-202.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-203-1024x366.png)
Upload the template into this stack.
![](https://tungle.ca/wp-content/uploads/2022/03/image-204-1024x690.png)
Enter your stack name, VPCID, VPCCIDR, and link public, private, sync, HAmgmt to corresponding subnets.
![](https://tungle.ca/wp-content/uploads/2022/03/image-205-1024x590.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-206.png)
Will choose the minimize instance type for the lab is c5.xlarge.
![](https://tungle.ca/wp-content/uploads/2022/03/image-208.png)
Copy Public route table ID into the publicsubnetroutetableID.
![](https://tungle.ca/wp-content/uploads/2022/03/image-209.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-210-1024x458.png)
The license is PAYG.
![](https://tungle.ca/wp-content/uploads/2022/03/image-211.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-213.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-214.png)
Click Next and accept the settings by default.
![](https://tungle.ca/wp-content/uploads/2022/03/image-215.png)
Click create stack. It will take a couple of minutes to complete.
![](https://tungle.ca/wp-content/uploads/2022/03/image-216.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-217-1024x552.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-219-1024x584.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-222-1024x781.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-223-1024x850.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-224-1024x757.png)
On Output, copy all information to notepad to keep track.
![](https://tungle.ca/wp-content/uploads/2022/03/image-220-1024x532.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-221.png)
There are three Elastic IP addresses that have been created on your VPC.
![](https://tungle.ca/wp-content/uploads/2022/03/image-225-1024x417.png)
This is a master FG.
![](https://tungle.ca/wp-content/uploads/2022/03/image-226-1024x661.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-227-1024x688.png)
It will link to a default Security Group that has been created when creating a stack.
![](https://tungle.ca/wp-content/uploads/2022/03/image-228-1024x766.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-229-1024x605.png)
Wait until both FGs are checked passed.
![](https://tungle.ca/wp-content/uploads/2022/03/image-230-1024x292.png)
Access the Primary HA FG via cluster IP address.
![](https://tungle.ca/wp-content/uploads/2022/03/image-233.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-231-1024x565.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-232-1024x537.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-234-1024x540.png)
Both access rules have been automatically created when creating a stack.
![](https://tungle.ca/wp-content/uploads/2022/03/image-235-1024x319.png)
Access the FG1, FG2 via mgmt IP address.
![](https://tungle.ca/wp-content/uploads/2022/03/image-236-1024x427.png)
Check HA status.
![](https://tungle.ca/wp-content/uploads/2022/03/image-237-1024x407.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-241-1024x406.png)
FG1.
![](https://tungle.ca/wp-content/uploads/2022/03/image-239-1024x660.png)
On FG2, there is only an elastic IP address.
![](https://tungle.ca/wp-content/uploads/2022/03/image-240-1024x660.png)
Update the Elastic IP address.
![](https://tungle.ca/wp-content/uploads/2022/03/image-242-1024x319.png)
Notes Network interface ID of FortiGate.
![](https://tungle.ca/wp-content/uploads/2022/03/image-243-1024x612.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-245-1024x618.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-246.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-247-1024x665.png)
Edit and add a new route on the private subnet route to route all traffic on the subnet to network interface of the master FG
![](https://tungle.ca/wp-content/uploads/2022/03/image-248-1024x552.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-253-1024x662.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-250-1024x667.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-252-1024x654.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-254-1024x656.png)
On FG2, open the console and type the command below.
diagnose debug application awsd -1
diagnose debug enable
On FG1, click instance state and stop the instance.
![](https://tungle.ca/wp-content/uploads/2022/03/image-255-1024x448.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-256-1024x562.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-263-1024x675.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-258-1024x661.png)
The Cluster IP address has been successfully moved to FG2.
![](https://tungle.ca/wp-content/uploads/2022/03/image-259-1024x672.png)
On S3 bucket, we can see there are two config files for FG1 and FG2 have been created when installing a stack.
![](https://tungle.ca/wp-content/uploads/2022/03/image-260-1024x489.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-261.png)
It only supports unicast for a heartbeat on AWS.
![](https://tungle.ca/wp-content/uploads/2022/03/image-262.png)
Refresh the cluster IP management access.
![](https://tungle.ca/wp-content/uploads/2022/03/image-264-1024x538.png)
FG2 has become the Primary for HA.
![](https://tungle.ca/wp-content/uploads/2022/03/image-265-1024x614.png)
The route has been updated to use a private network instance on FG2.
![](https://tungle.ca/wp-content/uploads/2022/03/image-266-1024x561.png)
Also, we can see all interfaces have been disabled for “Change source/destination check”.
![](https://tungle.ca/wp-content/uploads/2022/03/image-267.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-268.png)
To terminate the lab, go to stack and delete the stack that has been created for the lab.
![](https://tungle.ca/wp-content/uploads/2022/03/image-269-1024x453.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-270.png)
![](https://tungle.ca/wp-content/uploads/2022/03/image-271-1024x234.png)