mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-23 01:50:35 +00:00
We already have a docker image option to enable alternator on an unencrypted port, "--alternator-port", but we forgot to also allow the similar option for enabling alternator on an encrypted (HTTPS) port: "--alternator-https-port" so this patch adds the missing option, and documents how to use it. Note that using this option is not enough. When this option is used, Alternator also requires two files, /etc/scylla/scylla.crt and /etc/scylla/scylla.key, to be inserted into the image. These files should contain the SSL certificate, and key, respectively. If these files are missing, you will get an error in the log about the missing file. Fixes #6583. Signed-off-by: Nadav Har'El <nyh@scylladb.com> Message-Id: <20200621125219.12274-1-nyh@scylladb.com>
98 lines
3.9 KiB
Markdown
98 lines
3.9 KiB
Markdown
# Getting Started With ScyllaDB Alternator
|
|
---
|
|
## Installing Scylla
|
|
Before you can start using ScyllaDB Alternator, you will have to have an up
|
|
and running scylla cluster configured to expose the alternator port.
|
|
This section will guide you through the steps for setting up the cluster:
|
|
### Get Scylla with alternator support from a docker:
|
|
1. Because Alternator is still experimental and improves quickly, it is
|
|
recommended to run the latest nightly build. Make sure you have the latest
|
|
nightly image by running: `docker pull scylladb/scylla-nightly:latest`
|
|
2. Follow the steps in the [Scylla official download web page](https://www.scylladb.com/download/open-source/#docker)
|
|
add to every "docker run" command: `-p 8000:8000` before the image name
|
|
and `--alternator-port=8000 --alternator-write-isolation=always` at the end.
|
|
The "alternator-port" option specifies on which port Scylla will listen for
|
|
the (unencrypted) DynamoDB API, and the "alternator-write-isolation" chooses
|
|
whether or not Alternator will use LWT for every write.
|
|
For example,
|
|
`docker run --name scylla -d -p 8000:8000 scylladb/scylla-nightly:latest --alternator-port=8000 --alternator-write-isolation=always
|
|
The `--alternator-https-port=...` option can also be used to enable
|
|
Alternator on an encrypted (HTTPS) port. Note that in this case, the files
|
|
`/etc/scylla/scylla.crt` and `/etc/scylla/scylla.key` must be inserted into
|
|
the image, containing the SSL certificate and key to use.
|
|
|
|
## Testing Scylla's DynamoDB API support:
|
|
### Running AWS Tic Tac Toe demo app to test the cluster:
|
|
1. Follow the instructions on the [AWS github page](https://github.com/awsdocs/amazon-dynamodb-developer-guide/blob/master/doc_source/TicTacToe.Phase1.md)
|
|
2. Enjoy your tic-tac-toe game :-)
|
|
|
|
### Setting up the python environment
|
|
Run the following commands on your machine, this will install boto3 python library
|
|
which also contains drivers for DynamoDB:
|
|
|
|
```
|
|
sudo pip install --upgrade boto3
|
|
```
|
|
### Runnning some simple scripts:
|
|
The following is a 3 scripts test that creates a table named _usertable_ writes the
|
|
famous hello world record to it, and then, reads it back.
|
|
|
|
1. Put the following **create table** example script in a python file and run it (changing local host
|
|
to the address of your docker node if you are using docker):
|
|
```python
|
|
import boto3
|
|
dynamodb = boto3.resource('dynamodb',endpoint_url='http://localhost:8000',
|
|
region_name='None', aws_access_key_id='None', aws_secret_access_key='None')
|
|
|
|
dynamodb.create_table(
|
|
AttributeDefinitions=[
|
|
{
|
|
'AttributeName': 'key',
|
|
'AttributeType': 'S'
|
|
},
|
|
],
|
|
BillingMode='PAY_PER_REQUEST',
|
|
TableName='usertable',
|
|
KeySchema=[
|
|
{
|
|
'AttributeName': 'key',
|
|
'KeyType': 'HASH'
|
|
},
|
|
])
|
|
```
|
|
|
|
2. Put the following **write** example script in a python file and run it (changing local host
|
|
to the address of your docker node if you are using docker):
|
|
|
|
```python
|
|
import boto3
|
|
dynamodb = boto3.resource('dynamodb',endpoint_url='http://localhost:8000',
|
|
region_name='None', aws_access_key_id='None', aws_secret_access_key='None')
|
|
|
|
dynamodb.batch_write_item(RequestItems={
|
|
'usertable': [
|
|
{
|
|
'PutRequest': {
|
|
'Item': {
|
|
'key': 'test', 'x' : {'hello': 'world'}
|
|
}
|
|
},
|
|
}
|
|
]
|
|
})
|
|
```
|
|
|
|
3. Put the following **read** example script in a python file and run it (changing local host
|
|
to the address of your docker node if you are using docker):
|
|
```python
|
|
import boto3
|
|
dynamodb = boto3.resource('dynamodb',endpoint_url='http://localhost:8000',
|
|
region_name='None', aws_access_key_id='None', aws_secret_access_key='None')
|
|
|
|
print(dynamodb.batch_get_item(RequestItems={
|
|
'usertable' : { 'Keys': [{ 'key': 'test' }] }
|
|
}))
|
|
```
|
|
|
|
You should see the record you inserted in step 2 along with some http info printed to screen.
|