Skip to main content

Port forwarding with ELB in AWS vs NginX

< requirement >

input 1 : http://aaa1.testdomain.com
internal service 1 : http://localhost:3000

input 2 : http://aaa2.testdomain.com
internal service 2 : http://localhost:3001

< 1. AWS approach >

1. create LoadBalancers
cf. https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#LoadBalancers:
ㅇ create Load Balancer for 1st port
1. Define Load Balancer
Load Balancer name: aaa1-test
Load Balancer Port: 80
Instance Port: 3000
2. Configure Health Check
Ping Path: it's important!
3. Add EC2 Instances: Add EC2 Instances to Load Balancer
4. check out the domain and service
(1st Load Balancer's Description > DNS Name > A Record : ex) aaa1-test-1425011489.us-east-1.elb.amazonaws.com )
- test service : http://aaa1-test-1425011489.us-east-1.elb.amazonaws.com

ㅇ create Load Balancer for 2nd port
1. Define Load Balancer
Load Balancer name: aaa2-test
Load Balancer Port: 80
Instance Port: 3001
2. Configure Health Check
Ping Path: it's important!
3. Add EC2 Instances: Add EC2 Instances to Load Balancer
4. check out the domain and service
(2nd Load Balancer's Description > DNS Name > A Record : ex) aaa2-test-1425011489.us-east-1.elb.amazonaws.com )
- test service : http://aaa2-test-1425011489.us-east-1.elb.amazonaws.com

2. create route record sets
cf. https://console.aws.amazon.com/route53/home?region=us-east-1
Hosted zones > Create Hosted Zone
Domain Name: testdomain.com
ㅇ create domain for 1st Load Balancer
Hosted zones > Record Sets > create record set
name: aaa1.testdomain.com
cname: 1st Load Balancer's domain name ex) aaa1-test-1425011489.us-east-1.elb.amazonaws.com

ㅇ create domain for 2nd Load Balancer
Hosted zones > Record Sets > create record set
name: aaa2.testdomain.com
cname: 2nd Load Balancer's domain name ex) aaa2-test-1425011489.us-east-1.elb.amazonaws.com


< 2. Webserver approach - nginx >

sudo -i
apt-get update
apt-get install -y nginx
apt-get update


< Production >

* aws route 53 domain setting or get dns service
aaa1.testdomain.com. xxx.xxx.xxx.xxx  
aaa2.testdomain.com. xxx.xxx.xxx.xxx

/etc/nginx> sudo vi nginx.conf

    server {
        listen       80;
        server_name  aaa1.testdomain.com;
        location / {
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $remote_addr;
            proxy_pass http://localhost:3000;
            index  index.html;          
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       80;
        server_name  aaa2.testdomain.com;
        location / {
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $remote_addr;
            proxy_pass http://localhost:3001;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

$ sudo nginx
$ sudo nginx -s stop

Comments

Popular posts from this blog

DevOps JD's required skills from LinkedIn

From some of DevOps JD on linkedIn, I realised that DeveOps should be the leader of the organization. https://docs.google.com/spreadsheets/d/1P520nH0pYcAdN0rJcnMQqsgu9cV9GdknztJ92J8l7-s/pubhtml DevOps' Required Skills From LinkedIn on 8/30/16: DevOps should be the leader of the company! Yahoo Netflix Samsung Salesforce Fortinet SUM OS admin UNIX systems Unix platforms Linux administrator Linux VMs Docker VMs VMware, OpenStack, Hyper-V Openstack, KVM, VMWare Version control version control systems Git, SVN Cloud Amazon AWS AWS AWS, Azure DB MySql Oracle, MySQL, NoSQL Mysql administration and strong command of SQL MySQL RabbitMQ MySql, MongoDB, Redis, Oracle, ProgreSQL N/W TCP/IP networking, DNS, HTTP NAS Understanding of network stack, network tuning, subnet/VLANs. HAProxy, DNS, IPTable Script Lang Shell, Perl, Python, Ruby, PHP bash Python, Bash/tcsh a scripting language: Perl, Python and Unix Shell preferred Python, Perl, Ruby Python, Ruby, Shell, PHP Web LAMP stack

Ubuntu GUI with VNC on Xenserver

Xenserver 에서 Ubuntu GUI 를 쓰기 위해서는 VNC 가 답인 듯... Installing Ubuntu Gnome GUI on Ubuntu Server 12.10 with VNC Update Repositories # apt-get update Install gnome and vnc: # apt-get install gnome-core vnc4server Start VNC Server: # vncserver (You’ll then be prompted to create and verify a new VNC connect password) Kill the currently running VNC Session: # vncserver -kill :1 Edit VNC startup config file: # vim .vnc/xstartup Uncomment the following line: unset SESSION_MANAGER Add the following line: gnome-session --session=gnome-classic & Comment Out the following two lines: x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & End result should look like: #!/bin/sh # Uncomment the following two lines for normal desktop: unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc gnome-session --session=gnome-classic & [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 755 coreos-install sudo ./coreos-install \       -d /dev/sda \       -