Added high availability options to AWS deployment. #5304
parent
6d1283f92d
commit
83e2ee04d1
|
@ -53,6 +53,9 @@ details.
|
|||
|
||||
* Use the *Provisioned IOPS* in case of Provisioned IOPS (SSD) storage type.
|
||||
|
||||
* Use the *High Availability* option to specify High Availability
|
||||
option. This option creates a standby in a different Availability Zone(AZ).
|
||||
|
||||
.. image:: images/cloud_aws_database.png
|
||||
:alt: Cloud Deployment Provider
|
||||
:align: center
|
||||
|
|
|
@ -73,7 +73,7 @@ details.
|
|||
should be accepted. Add multiple IP addresses/ranges separated with commas,
|
||||
for example: "192.168.0.50, 192.168.0.100 - 192.168.0.200"
|
||||
|
||||
* User *Zone redundant high availability* option to specify High Availability
|
||||
* Use *Zone redundant high availability* option to specify High Availability
|
||||
option. Zone redundant high availability deploys a standby replica in a
|
||||
different zone.
|
||||
The Burstable instance type does not support high availability.
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 153 KiB |
|
@ -11,6 +11,7 @@ notes for it.
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
release_notes_6_15
|
||||
release_notes_6_14
|
||||
release_notes_6_13
|
||||
release_notes_6_12
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
************
|
||||
Version 6.15
|
||||
************
|
||||
|
||||
Release date: 2022-10-20
|
||||
|
||||
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v6.14.
|
||||
|
||||
Supported Database Servers
|
||||
**************************
|
||||
**PostgreSQL**: 10, 11, 12, 13 and 14
|
||||
|
||||
**EDB Advanced Server**: 10, 11, 12, 13 and 14
|
||||
|
||||
New features
|
||||
************
|
||||
|
||||
| `Issue #5304 <https://github.com/pgadmin-org/pgadmin4/issues/5304>`_ - Added high availability options to AWS deployment.
|
||||
|
||||
Housekeeping
|
||||
************
|
||||
|
||||
|
||||
Bug fixes
|
||||
*********
|
|
@ -102,6 +102,8 @@ class RdsProvider(AbsProvider):
|
|||
parser_create_instance.add_argument('--storage-type', default='gp2',
|
||||
help='storage type for the data '
|
||||
'database (default: gp2)')
|
||||
parser_create_instance.add_argument('--high-availability',
|
||||
default=False)
|
||||
parser_create_instance.add_argument('--public-ip', default='127.0.0.1',
|
||||
help='Public IP '
|
||||
'(default: 127.0.0.1)')
|
||||
|
@ -207,7 +209,7 @@ class RdsProvider(AbsProvider):
|
|||
StorageEncrypted=True,
|
||||
Iops=args.storage_iops,
|
||||
AutoMinorVersionUpgrade=True,
|
||||
MultiAZ=False,
|
||||
MultiAZ=bool(args.high_availability),
|
||||
MasterUsername=args.db_username,
|
||||
MasterUserPassword=db_password,
|
||||
DBInstanceClass=args.instance_type,
|
||||
|
|
|
@ -283,6 +283,8 @@ def deploy_on_rds(data):
|
|||
str(data['instance_details']['storage_size']),
|
||||
'--public-ip',
|
||||
str(data['instance_details']['public_ip']),
|
||||
'--high-availability',
|
||||
str(data['instance_details']['high_availability'])
|
||||
]
|
||||
|
||||
if data['instance_details']['storage_type'] == 'io1':
|
||||
|
|
|
@ -205,6 +205,10 @@ export function validateCloudStep3(cloudDBDetails, nodeInfo) {
|
|||
}
|
||||
|
||||
function createData(name, value) {
|
||||
if (typeof(value) == 'boolean') {
|
||||
value = (value === true) ? 'True' : 'False';
|
||||
}
|
||||
|
||||
return { name, value };
|
||||
}
|
||||
|
||||
|
@ -237,7 +241,11 @@ export function getAWSSummary(cloud, cloudInstanceDetails, cloudDBDetails) {
|
|||
createData(gettext('Port'), cloudDBDetails.db_port),
|
||||
];
|
||||
|
||||
return [rows1, rows2, rows3, rows4];
|
||||
const rows5 = [
|
||||
createData(gettext('High availability'), cloudInstanceDetails.high_availability),
|
||||
];
|
||||
|
||||
return [rows1, rows2, rows3, rows4, rows5];
|
||||
}
|
||||
|
||||
const getStorageType = (cloudInstanceDetails) => {
|
||||
|
|
|
@ -71,10 +71,11 @@ export function FinalSummary(props) {
|
|||
if (props.cloudProvider == 'biganimal') {
|
||||
summary = getBigAnimalSummary(props.cloudProvider, props.instanceData, props.databaseData);
|
||||
summaryHeader[1] = 'Version Details';
|
||||
} else if(props.cloudProvider == 'azure'){
|
||||
} else if(props.cloudProvider == 'azure') {
|
||||
summaryHeader.push('Network Connectivity','Availability');
|
||||
summary = getAzureSummary(props.cloudProvider, props.instanceData, props.databaseData);
|
||||
}else {
|
||||
summaryHeader.push('Availability');
|
||||
summary = getAWSSummary(props.cloudProvider, props.instanceData, props.databaseData);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ class CloudInstanceDetailsSchema extends BaseUISchema {
|
|||
oid: undefined,
|
||||
name: '',
|
||||
public_ip: initValues.hostIP,
|
||||
high_availability: false,
|
||||
...initValues
|
||||
});
|
||||
|
||||
|
@ -50,6 +51,10 @@ class CloudInstanceDetailsSchema extends BaseUISchema {
|
|||
type: 'nested-fieldset', label: gettext('Storage'),
|
||||
mode: ['create'],
|
||||
schema: new StorageSchema(),
|
||||
}, {
|
||||
type: 'nested-fieldset', label: gettext('Availability'),
|
||||
mode: ['create'],
|
||||
schema: new HighAvailablity(),
|
||||
},
|
||||
];
|
||||
}
|
||||
|
@ -198,12 +203,12 @@ export class InstanceSchema extends BaseUISchema {
|
|||
noEmpty: true,
|
||||
},{
|
||||
id: 'db_instance_class', label: gettext('Instance class'),
|
||||
type: 'toggle',
|
||||
type: 'select',
|
||||
options: [
|
||||
{'label': gettext('Standard classes (includes m classes)'), value: 'm'},
|
||||
{'label': gettext('Memory optimized classes (includes r & x classes)'), value: 'x'},
|
||||
{'label': gettext('Burstable classes (includes t classes)'), value: 't'},
|
||||
], noEmpty: true, orientation: 'vertical',
|
||||
], noEmpty: true
|
||||
},{
|
||||
id: 'instance_type', label: gettext('Instance type'),
|
||||
options: this.instanceOpts,
|
||||
|
@ -301,6 +306,27 @@ export class StorageSchema extends BaseUISchema {
|
|||
}
|
||||
}
|
||||
|
||||
export class HighAvailablity extends BaseUISchema {
|
||||
constructor() {
|
||||
super({
|
||||
high_availability: false
|
||||
});
|
||||
}
|
||||
get baseFields() {
|
||||
return [
|
||||
{
|
||||
id: 'high_availability',
|
||||
label: gettext('High availability'),
|
||||
type: 'switch',
|
||||
mode: ['create'],
|
||||
helpMessage: gettext(
|
||||
'Creates a standby in a different Availability Zone (AZ) to provide data redundancy, eliminate I/O freezes, and minimize latency spikes during system backups.'
|
||||
),
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class BigAnimalInstanceSchema extends BaseUISchema {
|
||||
constructor(fieldOptions = {}, initValues={}) {
|
||||
|
|
Loading…
Reference in New Issue