{"id":2263,"date":"2017-01-04T00:08:07","date_gmt":"2017-01-04T00:08:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2263"},"modified":"2023-06-21T06:45:35","modified_gmt":"2023-06-21T13:45:35","slug":"couchbase-cluster-amazon-using-cli","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-amazon-using-cli\/","title":{"rendered":"Cluster Couchbase en Amazon usando CLI"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-amazon-marketplace\/\">Couchbase on Amazon Marketplace<\/a> showed how to setup a single Couchbase node\u00a0using EC2 Console.\u00a0But typically you provision these nodes\u00a0en masse, and more commonly<br \/>\ncreate a cluster of them. Couchbase clusters are homogenous, scales horizontally\u00a0and thus\u00a0ensure that database does not become a bottleneck for your high performing application.<\/p>\n<p>This blog will show how to create, scale, and rebalance a Couchbase cluster using AWS Command Line Interface (CLI).<\/p>\n<h2>Install AWS CLI<\/h2>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/installing.html\">Install the AWS CLI<\/a>\u00a0provide complete details, but here is what worked on my machine:<\/p>\n<pre class=\"lang:default decode:true\">tools &gt; pip install awscli\r\nCollecting awscli\r\n  Downloading awscli-1.10.27-py2.py3-none-any.whl (937kB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 937kB 561kB\/s \r\nCollecting rsa&lt;=3.3.0,&gt;=3.1.2 (from awscli)\r\n  Downloading rsa-3.3-py2.py3-none-any.whl (44kB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 45kB 7.7MB\/s \r\nCollecting s3transfer==0.0.1 (from awscli)\r\n  Downloading s3transfer-0.0.1-py2.py3-none-any.whl\r\nCollecting colorama&lt;=0.3.3,&gt;=0.2.5 (from awscli)\r\n  Downloading colorama-0.3.3.tar.gz\r\nCollecting botocore==1.4.18 (from awscli)\r\n  Downloading botocore-1.4.18-py2.py3-none-any.whl (2.3MB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 2.3MB 221kB\/s \r\nCollecting docutils&gt;=0.10 (from awscli)\r\n  Downloading docutils-0.12.tar.gz (1.6MB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 1.6MB 328kB\/s \r\nCollecting pyasn1&gt;=0.1.3 (from rsa&lt;=3.3.0,&gt;=3.1.2-&gt;awscli)\r\n  Using cached pyasn1-0.1.9-py2.py3-none-any.whl\r\nCollecting futures&lt;4.0.0,&gt;=2.2.0 (from s3transfer==0.0.1-&gt;awscli)\r\n  Using cached futures-3.0.5-py2-none-any.whl\r\nCollecting jmespath&lt;1.0.0,&gt;=0.7.1 (from botocore==1.4.18-&gt;awscli)\r\n  Downloading jmespath-0.9.0-py2.py3-none-any.whl\r\nCollecting python-dateutil&lt;3.0.0,&gt;=2.1 (from botocore==1.4.18-&gt;awscli)\r\n  Downloading python_dateutil-2.5.3-py2.py3-none-any.whl (201kB)\r\n    100% |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 204kB 2.4MB\/s \r\nCollecting six&gt;=1.5 (from python-dateutil&lt;3.0.0,&gt;=2.1-&gt;botocore==1.4.18-&gt;awscli)\r\n  Using cached six-1.10.0-py2.py3-none-any.whl\r\nBuilding wheels for collected packages: colorama, docutils\r\n  Running setup.py bdist_wheel for colorama ... done\r\n  Stored in directory: \/Users\/arungupta\/Library\/Caches\/pip\/wheels\/21\/c5\/cf\/63fb92293f3ad402644ccaf882903cacdb8fe87c80b62c84df\r\n  Running setup.py bdist_wheel for docutils ... done\r\n  Stored in directory: \/Users\/arungupta\/Library\/Caches\/pip\/wheels\/db\/de\/bd\/b99b1e12d321fbc950766c58894c6576b1a73ae3131b29a151\r\nSuccessfully built colorama docutils\r\nInstalling collected packages: pyasn1, rsa, futures, jmespath, six, python-dateutil, docutils, botocore, s3transfer, colorama, awscli\r\nSuccessfully installed awscli-1.10.27 botocore-1.4.18 colorama-0.3.3 docutils-0.12 futures-3.0.5 jmespath-0.9.0 pyasn1-0.1.9 python-dateutil-2.5.3 rsa-3.3 s3transfer-0.0.1 six-1.10.0<\/pre>\n<p>Configure the CLI:<\/p>\n<pre class=\"lang:default decode:true\">aws configure\r\nAWS Access Key ID [****************Q5FQ]: YOUR ACCESS KEY ID\r\nAWS Secret Access Key [****************thBR]: YOUR SECRET ACCESS KEY\r\nDefault region name [us-west-1]: \r\nDefault output format [None]:<\/pre>\n<p>Enter your access key id and secret access key. These can be obtained as explained\u00a0in <a href=\"https:\/\/docs.aws.amazon.com\/AWSSimpleQueueService\/latest\/SQSGettingStartedGuide\/AWSCredentials.html\">Getting Your Access Key Id and Secret Access Key<\/a>.<\/p>\n<h2>Create AWS Security Group<\/h2>\n<p>If you provisioned a server earlier using <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-amazon-marketplace\/\">Amazon 1-click<\/a>\u00a0then a security group by the name\u00a0<code>Couchbase Server Community Edition-4-0-0-AutogenByAWSMP-<\/code> is<br \/>\ncreated for you. This security group has all the ports authorized\u00a0required for creating a Couchbase cluster\u00a0and can be used for creating the instance. Alternatively, you can create a new security group and\u00a0explicitly authorize ports.<\/p>\n<p>Create a security group:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 create-security-group --group-name my-couchbase-sg --description \"My Couchbase Security Group\"\r\n{\r\n    \"GroupId\": \"sg-c9bb19ad\"\r\n}\r\n<\/pre>\n<p>Authorize ports\u00a0in the security group:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 authorize-security-group-ingress --group-name my-couchbase-sg --port 8091-8093 --protocol tcp --cidr 0.0.0.0\/0\r\naws ec2 authorize-security-group-ingress --group-name my-couchbase-sg --port 11209-11211 --protocol tcp --cidr 0.0.0.0\/0\r\naws ec2 authorize-security-group-ingress --group-name my-couchbase-sg --port 21100-21299 --protocol tcp --cidr 0.0.0.0\/0\r\naws ec2 authorize-security-group-ingress --group-name my-couchbase-sg --port 4369 --protocol tcp --cidr 0.0.0.0\/0<\/pre>\n<h2>Create an AWS Key Pair<\/h2>\n<p>Read more about creating <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ec2-key-pairs.html\">key pair<\/a>. Create a key pair:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 create-key-pair --key-name my-couchbase-key &gt; my-couchbase-key.pem<\/pre>\n<p>Note the\u00a0key name as that will be used later.<\/p>\n<h2>Create Couchbase\u00a0Nodes on Amazon<\/h2>\n<p>Create two instances using the newly\u00a0created security group as:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 run-instances --image-id ami-db95ffbb --count 2 --instance-type m3.large --key-name my-couchbase-key --security-groups my-couchbase-sg<\/pre>\n<p>Note, the number of\u00a0instances are specified using <code>--count 2<\/code>. AMI ID can be obtained using EC2 console:\u00a0<a href=\"https:\/\/us-west-1.console.aws.amazon.com\/ec2\/v2\/home?region=us-west-1#Images:visibility=public-images;search=couchbase;sort=desc:name\">https:\/\/us-west-1.console.aws.amazon.com\/ec2\/v2\/home?region=us-west-1#Images:visibility=public-images;search=couchbase;sort=desc:name<\/a>.<br \/>\nOr create\u00a0two instances using the pre-created security group as:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 run-instances --image-id ami-db95ffbb --count 2 --instance-type m3.large --key-name my-couchbase-key --security-groups \"Couchbase Server Community Edition-4-0-0-AutogenByAWSMP-\"<\/pre>\n<p>This will show the output as:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"OwnerId\": \"598307997273\", \r\n    \"ReservationId\": \"r-cb952179\", \r\n    \"Groups\": [], \r\n    \"Instances\": [\r\n        {\r\n            \"Monitoring\": {\r\n                \"State\": \"disabled\"\r\n            }, \r\n            \"PublicDnsName\": \"\", \r\n            \"RootDeviceType\": \"ebs\", \r\n            \"State\": {\r\n                \"Code\": 0, \r\n                \"Name\": \"pending\"\r\n            }, \r\n            \"EbsOptimized\": false, \r\n            \"LaunchTime\": \"2016-05-16T16:11:59.000Z\", \r\n            \"PrivateIpAddress\": \"172.31.15.200\", \r\n            \"ProductCodes\": [], \r\n            \"VpcId\": \"vpc-c561f9a0\", \r\n            \"StateTransitionReason\": \"\", \r\n            \"InstanceId\": \"i-90199025\", \r\n            \"ImageId\": \"ami-db95ffbb\", \r\n            \"PrivateDnsName\": \"ip-172-31-15-200.us-west-1.compute.internal\", \r\n            \"KeyName\": \"my-couchbase-key\", \r\n            \"SecurityGroups\": [\r\n                {\r\n                    \"GroupName\": \"my-couchbase-sg\", \r\n                    \"GroupId\": \"sg-6172dd05\"\r\n                }\r\n            ], \r\n            \"ClientToken\": \"\", \r\n            \"SubnetId\": \"subnet-625bd23b\", \r\n            \"InstanceType\": \"m3.large\", \r\n            \"NetworkInterfaces\": [\r\n                {\r\n                    \"Status\": \"in-use\", \r\n                    \"MacAddress\": \"06:b1:52:a6:87:f7\", \r\n                    \"SourceDestCheck\": true, \r\n                    \"VpcId\": \"vpc-c561f9a0\", \r\n                    \"Description\": \"\", \r\n                    \"NetworkInterfaceId\": \"eni-86ac6fdb\", \r\n                    \"PrivateIpAddresses\": [\r\n                        {\r\n                            \"PrivateDnsName\": \"ip-172-31-15-200.us-west-1.compute.internal\", \r\n                            \"Primary\": true, \r\n                            \"PrivateIpAddress\": \"172.31.15.200\"\r\n                        }\r\n                    ], \r\n                    \"PrivateDnsName\": \"ip-172-31-15-200.us-west-1.compute.internal\", \r\n                    \"Attachment\": {\r\n                        \"Status\": \"attaching\", \r\n                        \"DeviceIndex\": 0, \r\n                        \"DeleteOnTermination\": true, \r\n                        \"AttachmentId\": \"eni-attach-530b7293\", \r\n                        \"AttachTime\": \"2016-05-16T16:11:59.000Z\"\r\n                    }, \r\n                    \"Groups\": [\r\n                        {\r\n                            \"GroupName\": \"my-couchbase-sg\", \r\n                            \"GroupId\": \"sg-6172dd05\"\r\n                        }\r\n                    ], \r\n                    \"SubnetId\": \"subnet-625bd23b\", \r\n                    \"OwnerId\": \"598307997273\", \r\n                    \"PrivateIpAddress\": \"172.31.15.200\"\r\n                }\r\n            ], \r\n            \"SourceDestCheck\": true, \r\n            \"Placement\": {\r\n                \"Tenancy\": \"default\", \r\n                \"GroupName\": \"\", \r\n                \"AvailabilityZone\": \"us-west-1c\"\r\n            }, \r\n            \"Hypervisor\": \"xen\", \r\n            \"BlockDeviceMappings\": [], \r\n            \"Architecture\": \"x86_64\", \r\n            \"StateReason\": {\r\n                \"Message\": \"pending\", \r\n                \"Code\": \"pending\"\r\n            }, \r\n            \"RootDeviceName\": \"\/dev\/xvda\", \r\n            \"VirtualizationType\": \"hvm\", \r\n            \"AmiLaunchIndex\": 0\r\n        }, \r\n        {\r\n            \"Monitoring\": {\r\n                \"State\": \"disabled\"\r\n            }, \r\n            \"PublicDnsName\": \"\", \r\n            \"RootDeviceType\": \"ebs\", \r\n            \"State\": {\r\n                \"Code\": 0, \r\n                \"Name\": \"pending\"\r\n            }, \r\n            \"EbsOptimized\": false, \r\n            \"LaunchTime\": \"2016-05-16T16:11:59.000Z\", \r\n            \"PrivateIpAddress\": \"172.31.15.201\", \r\n            \"ProductCodes\": [], \r\n            \"VpcId\": \"vpc-c561f9a0\", \r\n            \"StateTransitionReason\": \"\", \r\n            \"InstanceId\": \"i-93199026\", \r\n            \"ImageId\": \"ami-db95ffbb\", \r\n            \"PrivateDnsName\": \"ip-172-31-15-201.us-west-1.compute.internal\", \r\n            \"KeyName\": \"my-couchbase-key\", \r\n            \"SecurityGroups\": [\r\n                {\r\n                    \"GroupName\": \"my-couchbase-sg\", \r\n                    \"GroupId\": \"sg-6172dd05\"\r\n                }\r\n            ], \r\n            \"ClientToken\": \"\", \r\n            \"SubnetId\": \"subnet-625bd23b\", \r\n            \"InstanceType\": \"m3.large\", \r\n            \"NetworkInterfaces\": [\r\n                {\r\n                    \"Status\": \"in-use\", \r\n                    \"MacAddress\": \"06:83:e8:06:2a:f1\", \r\n                    \"SourceDestCheck\": true, \r\n                    \"VpcId\": \"vpc-c561f9a0\", \r\n                    \"Description\": \"\", \r\n                    \"NetworkInterfaceId\": \"eni-81ac6fdc\", \r\n                    \"PrivateIpAddresses\": [\r\n                        {\r\n                            \"PrivateDnsName\": \"ip-172-31-15-201.us-west-1.compute.internal\", \r\n                            \"Primary\": true, \r\n                            \"PrivateIpAddress\": \"172.31.15.201\"\r\n                        }\r\n                    ], \r\n                    \"PrivateDnsName\": \"ip-172-31-15-201.us-west-1.compute.internal\", \r\n                    \"Attachment\": {\r\n                        \"Status\": \"attaching\", \r\n                        \"DeviceIndex\": 0, \r\n                        \"DeleteOnTermination\": true, \r\n                        \"AttachmentId\": \"eni-attach-680b72a8\", \r\n                        \"AttachTime\": \"2016-05-16T16:11:59.000Z\"\r\n                    }, \r\n                    \"Groups\": [\r\n                        {\r\n                            \"GroupName\": \"my-couchbase-sg\", \r\n                            \"GroupId\": \"sg-6172dd05\"\r\n                        }\r\n                    ], \r\n                    \"SubnetId\": \"subnet-625bd23b\", \r\n                    \"OwnerId\": \"598307997273\", \r\n                    \"PrivateIpAddress\": \"172.31.15.201\"\r\n                }\r\n            ], \r\n            \"SourceDestCheck\": true, \r\n            \"Placement\": {\r\n                \"Tenancy\": \"default\", \r\n                \"GroupName\": \"\", \r\n                \"AvailabilityZone\": \"us-west-1c\"\r\n            }, \r\n            \"Hypervisor\": \"xen\", \r\n            \"BlockDeviceMappings\": [], \r\n            \"Architecture\": \"x86_64\", \r\n            \"StateReason\": {\r\n                \"Message\": \"pending\", \r\n                \"Code\": \"pending\"\r\n            }, \r\n            \"RootDeviceName\": \"\/dev\/xvda\", \r\n            \"VirtualizationType\": \"hvm\", \r\n            \"AmiLaunchIndex\": 1\r\n        }\r\n    ]\r\n}<\/pre>\n<p>Status of the instances can be checked as:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 describe-instance-status --instance-ids `aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --filters Name=instance-state-name,Values=running --output text`<\/pre>\n<p>And shows the output as:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"InstanceStatuses\": [\r\n        {\r\n            \"InstanceId\": \"i-90199025\", \r\n            \"InstanceState\": {\r\n                \"Code\": 16, \r\n                \"Name\": \"running\"\r\n            }, \r\n            \"AvailabilityZone\": \"us-west-1c\", \r\n            \"SystemStatus\": {\r\n                \"Status\": \"initializing\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"initializing\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }, \r\n            \"InstanceStatus\": {\r\n                \"Status\": \"initializing\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"initializing\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }\r\n        }, \r\n        {\r\n            \"InstanceId\": \"i-93199026\", \r\n            \"InstanceState\": {\r\n                \"Code\": 16, \r\n                \"Name\": \"running\"\r\n            }, \r\n            \"AvailabilityZone\": \"us-west-1c\", \r\n            \"SystemStatus\": {\r\n                \"Status\": \"initializing\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"initializing\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }, \r\n            \"InstanceStatus\": {\r\n                \"Status\": \"initializing\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"initializing\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }\r\n        }\r\n    ]\r\n}<\/pre>\n<p>Here the status is shown as <code>initializing<\/code>.\u00a0It takes a few minutes for the instances to be provisioned.\u00a0Instances that have passed all the checks can be verified as:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 describe-instance-status --filters Name=instance-status.reachability,Values=passed --instance-ids `aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --filters Name=instance-state-name,Values=running --output text`<\/pre>\n<p>At first, it shows the result as:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"InstanceStatuses\": []\r\n}<\/pre>\n<p>But once all the instances pass the check, then the results look like:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"InstanceStatuses\": [\r\n        {\r\n            \"InstanceId\": \"i-90199025\", \r\n            \"InstanceState\": {\r\n                \"Code\": 16, \r\n                \"Name\": \"running\"\r\n            }, \r\n            \"AvailabilityZone\": \"us-west-1c\", \r\n            \"SystemStatus\": {\r\n                \"Status\": \"ok\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"passed\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }, \r\n            \"InstanceStatus\": {\r\n                \"Status\": \"ok\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"passed\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }\r\n        }, \r\n        {\r\n            \"InstanceId\": \"i-93199026\", \r\n            \"InstanceState\": {\r\n                \"Code\": 16, \r\n                \"Name\": \"running\"\r\n            }, \r\n            \"AvailabilityZone\": \"us-west-1c\", \r\n            \"SystemStatus\": {\r\n                \"Status\": \"ok\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"passed\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }, \r\n            \"InstanceStatus\": {\r\n                \"Status\": \"ok\", \r\n                \"Details\": [\r\n                    {\r\n                        \"Status\": \"passed\", \r\n                        \"Name\": \"reachability\"\r\n                    }\r\n                ]\r\n            }\r\n        }\r\n    ]\r\n}<\/pre>\n<p>Here the status is shown as <code>passed<\/code>.<\/p>\n<h2>Configure Couchbase\u00a0Nodes<\/h2>\n<p>Each Couchbase node needs to be provisioned with the following details:<\/p>\n<ul>\n<li class=\"p1\"><span class=\"s1\">Memory<\/span><\/li>\n<li class=\"p1\"><span class=\"s1\">Services (index, data and query)<\/span><\/li>\n<li class=\"p1\"><span class=\"s1\">Auth credentials (username: `Administrator`, password: `password`)<\/span><\/li>\n<li class=\"p1\"><span class=\"s1\">Loads `travel-sample` bucket<\/span><\/li>\n<\/ul>\n<p>This can be done using the script:<\/p>\n<pre class=\"lang:default decode:true\">for ip in \"$@\"\r\ndo\r\n        curl -v -X POST https:\/\/$ip:8091\/pools\/default -d memoryQuota=300 -d indexMemoryQuota=300\r\n        curl -v https:\/\/$ip:8091\/node\/controller\/setupServices -d services=kv%2Cn1ql%2Cindex\r\n        curl -v https:\/\/$ip:8091\/settings\/web -d port=8091 -d username=Administrator -d password=password\r\n        curl -v -u Administrator:password -X POST https:\/\/$ip:8091\/sampleBuckets\/install -d '[\"travel-sample\"]'\r\ndone<\/pre>\n<p>This is available at:\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/couchbase-amazon\/blob\/master\/configure-instance.sh\">https:\/\/github.com\/arun-gupta\/couchbase-amazon\/blob\/master\/configure-instance.sh<\/a>. It can be invoked as:<\/p>\n<pre class=\"lang:default decode:true\">.\/configure-instance.sh `aws ec2 describe-instances --query 'Reservations[*].Instances[*].[PublicDnsName]' --filters Name=instance-state-name,Values=running --output text`<\/pre>\n<p>And shows the output as:<\/p>\n<pre class=\"lang:default decode:true\">*   Trying 52.53.171.49...\r\n* Connected to ec2-52-53-171-49.us-west-1.compute.amazonaws.com (52.53.171.49) port 8091 (#0)\r\n&gt; POST \/pools\/default HTTP\/1.1\r\n&gt; Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 36\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 36 out of 36 bytes\r\n&lt; HTTP\/1.1 200 OK\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:47 GMT\r\n&lt; Content-Length: 0\r\n&lt; Cache-Control: no-cache\r\n&lt; * Connection #0 to host ec2-52-53-171-49.us-west-1.compute.amazonaws.com left intact * Trying 52.53.171.49... * Connected to ec2-52-53-171-49.us-west-1.compute.amazonaws.com (52.53.171.49) port 8091 (#0) &gt; POST \/node\/controller\/setupServices HTTP\/1.1\r\n&gt; Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 26\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 26 out of 26 bytes\r\n&lt; HTTP\/1.1 200 OK\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:47 GMT\r\n&lt; Content-Length: 0\r\n&lt; Cache-Control: no-cache\r\n&lt; * Connection #0 to host ec2-52-53-171-49.us-west-1.compute.amazonaws.com left intact * Trying 52.53.171.49... * Connected to ec2-52-53-171-49.us-west-1.compute.amazonaws.com (52.53.171.49) port 8091 (#0) &gt; POST \/settings\/web HTTP\/1.1\r\n&gt; Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 50\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 50 out of 50 bytes\r\n&lt; HTTP\/1.1 200 OK\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:47 GMT\r\n&lt; Content-Type: application\/json\r\n&lt; Content-Length: 78\r\n&lt; Cache-Control: no-cache\r\n&lt; * Connection #0 to host ec2-52-53-171-49.us-west-1.compute.amazonaws.com left intact {\"newBaseUri\":\"https:\/\/ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091\/\"}* Trying 52.53.171.49... * Connected to ec2-52-53-171-49.us-west-1.compute.amazonaws.com (52.53.171.49) port 8091 (#0) * Server auth using Basic with user 'Administrator' &gt; POST \/sampleBuckets\/install HTTP\/1.1\r\n&gt; Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091\r\n&gt; Authorization: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 17\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 17 out of 17 bytes\r\n&lt; HTTP\/1.1 202 Accepted\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:47 GMT\r\n&lt; Content-Type: application\/json\r\n&lt; Content-Length: 2\r\n&lt; Cache-Control: no-cache\r\n&lt; * Connection #0 to host ec2-52-53-171-49.us-west-1.compute.amazonaws.com left intact []* Trying 52.53.239.100... * Connected to ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) port 8091 (#0) &gt; POST \/pools\/default HTTP\/1.1\r\n&gt; Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 36\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 36 out of 36 bytes\r\n&lt; HTTP\/1.1 200 OK\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:48 GMT\r\n&lt; Content-Length: 0\r\n&lt; Cache-Control: no-cache\r\n&lt; * Connection #0 to host ec2-52-53-239-100.us-west-1.compute.amazonaws.com left intact * Trying 52.53.239.100... * Connected to ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) port 8091 (#0) &gt; POST \/node\/controller\/setupServices HTTP\/1.1\r\n&gt; Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 26\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 26 out of 26 bytes\r\n&lt; HTTP\/1.1 200 OK\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:48 GMT\r\n&lt; Content-Length: 0\r\n&lt; Cache-Control: no-cache\r\n&lt; * Connection #0 to host ec2-52-53-239-100.us-west-1.compute.amazonaws.com left intact * Trying 52.53.239.100... * Connected to ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) port 8091 (#0) &gt; POST \/settings\/web HTTP\/1.1\r\n&gt; Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 50\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 50 out of 50 bytes\r\n&lt; HTTP\/1.1 200 OK\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:48 GMT\r\n&lt; Content-Type: application\/json\r\n&lt; Content-Length: 79\r\n&lt; Cache-Control: no-cache\r\n&lt; * Connection #0 to host ec2-52-53-239-100.us-west-1.compute.amazonaws.com left intact {\"newBaseUri\":\"https:\/\/ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091\/\"}* Trying 52.53.239.100... * Connected to ec2-52-53-239-100.us-west-1.compute.amazonaws.com (52.53.239.100) port 8091 (#0) * Server auth using Basic with user 'Administrator' &gt; POST \/sampleBuckets\/install HTTP\/1.1\r\n&gt; Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091\r\n&gt; Authorization: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Length: 17\r\n&gt; Content-Type: application\/x-www-form-urlencoded\r\n&gt; \r\n* upload completely sent off: 17 out of 17 bytes\r\n&lt; HTTP\/1.1 202 Accepted\r\n&lt; Server: Couchbase Server\r\n&lt; Pragma: no-cache\r\n&lt; Date: Mon, 16 May 2016 16:18:48 GMT\r\n&lt; Content-Type: application\/json\r\n&lt; Content-Length: 2\r\n&lt; Cache-Control: no-cache\r\n&lt; \r\n* Connection #0 to host ec2-52-53-239-100.us-west-1.compute.amazonaws.com left intact\r\n[]<\/pre>\n<p>This is invoking <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/rest-api\/rest-endpoints-all.html\">Couchbase REST API <\/a>to configure each Couchbase node. Now that each Couchbase node is configured, lets access them. Find public<br \/>\nIP address of the\u00a0instances:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 describe-instances --query 'Reservations[*].Instances[*].[PublicDnsName]' --filters Name=instance-state-name,Values=running --output text<\/pre>\n<p>It shows the output as:<\/p>\n<pre class=\"lang:default decode:true\">ec2-52-53-171-49.us-west-1.compute.amazonaws.com\r\nec2-52-53-239-100.us-west-1.compute.amazonaws.com<\/pre>\n<p>Pick one of the IP addresses and access it at :8091 to see the output:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-1-1024x565.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13987\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-1-1024x565.png\" alt=\"couchbase-aws-cli-1\" width=\"604\" height=\"333\" \/><\/a><br \/>\nEach Couchbase<br \/>\nnode is configured with username as Administrator and password as password. Entering the credentials shows Couchbase Web Console:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-2-1024x466.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13988\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-2-1024x466.png\" alt=\"couchbase-aws-cli-2\" width=\"604\" height=\"275\" \/><\/a><br \/>\nClick on<br \/>\nServer Nodes to see that only a single node is in the cluster:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-3-1024x557.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13989\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-3-1024x557.png\" alt=\"couchbase-aws-cli-3\" width=\"604\" height=\"329\" \/><\/a><\/p>\n<h2>Create and Rebalance Couchbase Cluster<\/h2>\n<p>All Couchbase server nodes are created equal.\u00a0This allows the Couchbase cluster to truly scale horizontally to meet your growing application demands. Independently running Couchbase nodes can be added to a\u00a0cluster\u00a0by invoking the <code>server-add<\/code> CLI command. This is typically a two step process. The first step is to add\u00a0one or more nodes. The second step is to\u00a0rebalance the cluster where data on the existing nodes is rebalanced across the updated cluster.<\/p>\n<p>In our case, a Couchbase node\u00a0is\u00a0running on each AMI. Lets pick\u00a0IP address of any one\u00a0Couchbase node and add IP address of the other node. This can be done\u00a0using the script:<\/p>\n<pre class=\"lang:default decode:true\">export primary=$1\r\nshift\r\nfor ip in \"$@\"\r\ndo\r\n    $COUCHBASE_CLI \r\n    server-add \r\n    --cluster=$primary:8091 \r\n    --user Administrator \r\n    --password password \r\n    --server-add=$ip \r\n    --server-add-username=Administrator \r\n    --server-add-password=password\r\ndone<\/pre>\n<p>This script is available at\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/couchbase-amazon\/blob\/master\/create-cluster.sh\">https:\/\/github.com\/arun-gupta\/couchbase-amazon\/blob\/master\/create-cluster.sh<\/a>\u00a0and can be invoked as:<\/p>\n<pre class=\"lang:default decode:true\">.\/create-cluster.sh `aws ec2 describe-instances --query 'Reservations[*].Instances[*].[PublicDnsName]' --filters Name=instance-state-name,Values=running --output text`<\/pre>\n<p>And shows the output as:<\/p>\n<pre class=\"lang:default decode:true\">SUCCESS: server-add ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091<\/pre>\n<p>Couchbase Web Console is updated to show:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-4-1024x551.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13990\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-4-1024x551.png\" alt=\"couchbase-aws-cli-4\" width=\"604\" height=\"325\" \/><\/a><\/p>\n<p>Finally, rebalance the cluster using the script:<\/p>\n<pre class=\"lang:default decode:true\">export primary=$1\r\nshift\r\nfor ip in \"$@\" \r\ndo\r\n        $COUCHBASE_CLI \r\n        rebalance \r\n        --cluster=$primary:8091 \r\n        --user Administrator \r\n        --password password \r\n        --server-add-username=Administrator \r\n        --server-add-password=password\r\ndone<\/pre>\n<p>This shows the output as:<\/p>\n<pre class=\"lang:default decode:true\">INFO: rebalancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \r\nSUCCESS: rebalanced cluster<\/pre>\n<p>Couchbase Web Console is now updated:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-5-1024x469.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13991\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-amazon-using-cli\/couchbase-aws-cli-5-1024x469.png\" alt=\"couchbase-aws-cli-5\" width=\"604\" height=\"277\" \/><\/a><\/p>\n<p>Once the cluster is up and running, try out <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdks\/java-2.2\/hello-couchbase.html\">Hello Couchbase Example<\/a>.<\/p>\n<h2>Terminate Couchbase\u00a0Nodes<\/h2>\n<p>Finally,\u00a0killing the cluster is fairly straight forward:<\/p>\n<pre class=\"lang:default decode:true\">aws ec2 terminate-instances --instance-ids `aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --filters Name=instance-state-name,Values=running --output text`<\/pre>\n<p>This\u00a0blog showed how to spin up, scale and rebalance a\u00a0Couchbase cluster using AWS CLI. All scripts are available at\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/couchbase-amazon\">https:\/\/github.com\/arun-gupta\/couchbase-amazon<\/a>.<\/p>\n<p>Further references\u00a0&#8230;<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.couchbase.com\/server\">Couchbase Server Developer\u00a0Portal<\/a><\/li>\n<li><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdks\/java-2.2\/hello-couchbase.html\">Hello Couchbase Example<\/a><\/li>\n<li>Questions on <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">StackOverflow,<\/a>\u00a0<a href=\"https:\/\/www.couchbase.com\/forums\/\">Forums<\/a>\u00a0or <a href=\"https:\/\/couchbase-community.slack.com\/\">Slack Channel<\/a><\/li>\n<li>Follow us\u00a0<a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/next\/\">Couchbase 4.5 Beta<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase on Amazon Marketplace showed how to setup a single Couchbase node\u00a0using EC2 Console.\u00a0But typically you provision these nodes\u00a0en masse, and more commonly create a cluster of them. Couchbase clusters are homogenous, scales horizontally\u00a0and thus\u00a0ensure that database does not become [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[],"ppma_author":[8933],"class_list":["post-2263","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Couchbase Cluster on Amazon using CLI - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-amazon-using-cli\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Cluster on Amazon using CLI\" \/>\n<meta property=\"og:description\" content=\"Couchbase on Amazon Marketplace showed how to setup a single Couchbase node\u00a0using EC2 Console.\u00a0But typically you provision these nodes\u00a0en masse, and more commonly create a cluster of them. Couchbase clusters are homogenous, scales horizontally\u00a0and thus\u00a0ensure that database does not become [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-amazon-using-cli\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-04T00:08:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-21T13:45:35+00:00\" \/>\n<meta name=\"author\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@arungupta\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Couchbase Cluster on Amazon using CLI\",\"datePublished\":\"2017-01-04T00:08:06+00:00\",\"dateModified\":\"2023-06-21T13:45:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/\"},\"wordCount\":723,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/\",\"name\":\"Couchbase Cluster on Amazon using CLI - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-04T00:08:06+00:00\",\"dateModified\":\"2023-06-21T13:45:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-cluster-amazon-using-cli\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Cluster on Amazon using CLI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/39d8caed0f536489b6aa6e8d31ee631f\",\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g8900a75409c646948fe0bd80f6240337\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"caption\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\"},\"description\":\"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/arungupta\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/arun-gupta\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Cluster on Amazon using CLI - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-amazon-using-cli\/","og_locale":"es_MX","og_type":"article","og_title":"Couchbase Cluster on Amazon using CLI","og_description":"Couchbase on Amazon Marketplace showed how to setup a single Couchbase node\u00a0using EC2 Console.\u00a0But typically you provision these nodes\u00a0en masse, and more commonly create a cluster of them. Couchbase clusters are homogenous, scales horizontally\u00a0and thus\u00a0ensure that database does not become [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-amazon-using-cli\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-04T00:08:06+00:00","article_modified_time":"2023-06-21T13:45:35+00:00","author":"Arun Gupta, VP, Developer Advocacy, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@arungupta","twitter_misc":{"Written by":"Arun Gupta, VP, Developer Advocacy, Couchbase","Est. reading time":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Couchbase Cluster on Amazon using CLI","datePublished":"2017-01-04T00:08:06+00:00","dateModified":"2023-06-21T13:45:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/"},"wordCount":723,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/","name":"Couchbase Cluster on Amazon using CLI - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-04T00:08:06+00:00","dateModified":"2023-06-21T13:45:35+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-amazon-using-cli\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Cluster on Amazon using CLI"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f","name":"Arun Gupta, Vicepresidente, Defensa del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g8900a75409c646948fe0bd80f6240337","url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","caption":"Arun Gupta, VP, Developer Advocacy, Couchbase"},"description":"Arun Gupta es vicepresidente de promoci\u00f3n de desarrolladores en Couchbase. Ha creado y dirigido comunidades de desarrolladores durante m\u00e1s de 10 a\u00f1os en Sun, Oracle y Red Hat. Tiene una gran experiencia en liderar equipos multidisciplinares para desarrollar y ejecutar estrategias, planificar y ejecutar contenidos, campa\u00f1as de marketing y programas. Anteriormente dirigi\u00f3 equipos de ingenier\u00eda en Sun y es miembro fundador del equipo Java EE. Gupta es autor de m\u00e1s de 2.000 entradas de blog sobre tecnolog\u00eda. Tiene una amplia experiencia como conferenciante en m\u00e1s de 40 pa\u00edses sobre innumerables temas y es una JavaOne Rock Star desde hace tres a\u00f1os consecutivos. Gupta tambi\u00e9n fund\u00f3 el cap\u00edtulo Devoxx4Kids en Estados Unidos y sigue promoviendo la educaci\u00f3n tecnol\u00f3gica entre los ni\u00f1os. Autor de varios libros sobre tecnolog\u00eda, \u00e1vido corredor, trotamundos, campe\u00f3n de Java, l\u00edder de JUG, miembro del Dream Team de NetBeans y capit\u00e1n de Docker, es f\u00e1cilmente accesible en @arungupta.","sameAs":["https:\/\/x.com\/arungupta"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/arun-gupta\/"}]}},"acf":[],"authors":[{"term_id":8933,"user_id":58,"is_guest":0,"slug":"arun-gupta","display_name":"Arun Gupta, VP, Developer Advocacy, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2263"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2263\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2263"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}