http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml new file mode 100644 index 0000000..518379c --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml @@ -0,0 +1,688 @@ +[#ftl] +# +# Cassandra storage config YAML + +# NOTE: +# See http://wiki.apache.org/cassandra/StorageConfiguration for +# full explanations of configuration directives +# /NOTE + +# The name of the cluster. This is mainly used to prevent machines in +# one logical cluster from joining another. +cluster_name: '${entity.clusterName}' + +# This defines the number of tokens randomly assigned to this node on the ring +# The more tokens, relative to other nodes, the larger the proportion of data +# that this node will store. You probably want all nodes to have the same number +# of tokens assuming they have equal hardware capability. +# +# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, +# and will use the initial_token as described below. +# +# Specifying initial_token will override this setting. +# +# If you already have a cluster with 1 token per node, and wish to migrate to +# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations +num_tokens: ${entity.numTokensPerNode?c} + +# initial_token allows you to specify tokens manually. While you can use it with +# vnodes (num_tokens > 1, above) -- in which case you should provide a +# comma-separated list -- it's primarily used when adding nodes to legacy clusters +# that do not have vnodes enabled. +# initial_token: ${entity.tokensAsString} + +# May either be "true" or "false" to enable globally, or contain a list +# of data centers to enable per-datacenter. +# hinted_handoff_enabled: DC1,DC2 +# See http://wiki.apache.org/cassandra/HintedHandoff +hinted_handoff_enabled: true +# this defines the maximum amount of time a dead host will have hints +# generated. After it has been dead this long, new hints for it will not be +# created until it has been seen alive and gone down again. +max_hint_window_in_ms: 10800000 # 3 hours +# Maximum throttle in KBs per second, per delivery thread. This will be +# reduced proportionally to the number of nodes in the cluster. (If there +# are two nodes in the cluster, each delivery thread will use the maximum +# rate; if there are three, each will throttle to half of the maximum, +# since we expect two nodes to be delivering hints simultaneously.) +hinted_handoff_throttle_in_kb: 1024 +# Number of threads with which to deliver hints; +# Consider increasing this number when you have multi-dc deployments, since +# cross-dc handoff tends to be slower +max_hints_delivery_threads: 2 + +# Maximum throttle in KBs per second, total. This will be +# reduced proportionally to the number of nodes in the cluster. +batchlog_replay_throttle_in_kb: 1024 + +# Authentication backend, implementing IAuthenticator; used to identify users +# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, +# PasswordAuthenticator}. +# +# - AllowAllAuthenticator performs no checks - set it to disable authentication. +# - PasswordAuthenticator relies on username/password pairs to authenticate +# users. It keeps usernames and hashed passwords in system_auth.credentials table. +# Please increase system_auth keyspace replication factor if you use this authenticator. +authenticator: AllowAllAuthenticator + +# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions +# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer, +# CassandraAuthorizer}. +# +# - AllowAllAuthorizer allows any action to any user - set it to disable authorization. +# - CassandraAuthorizer stores permissions in system_auth.permissions table. Please +# increase system_auth keyspace replication factor if you use this authorizer. +authorizer: AllowAllAuthorizer + +# Validity period for permissions cache (fetching permissions can be an +# expensive operation depending on the authorizer, CassandraAuthorizer is +# one example). Defaults to 2000, set to 0 to disable. +# Will be disabled automatically for AllowAllAuthorizer. +permissions_validity_in_ms: 2000 + +# The partitioner is responsible for distributing groups of rows (by +# partition key) across nodes in the cluster. You should leave this +# alone for new clusters. The partitioner can NOT be changed without +# reloading all data, so when upgrading you should set this to the +# same partitioner you were already using. +# +# Besides Murmur3Partitioner, partitioners included for backwards +# compatibility include RandomPartitioner, ByteOrderedPartitioner, and +# OrderPreservingPartitioner. +# +partitioner: org.apache.cassandra.dht.Murmur3Partitioner + +# Directories where Cassandra should store data on disk. Cassandra +# will spread data evenly across them, subject to the granularity of +# the configured compaction strategy. +data_file_directories: + - ${driver.runDir}/data + +# commit log +commitlog_directory: ${driver.runDir}/commitlog + +# policy for data disk failures: +# stop_paranoid: shut down gossip and Thrift even for single-sstable errors. +# stop: shut down gossip and Thrift, leaving the node effectively dead, but +# can still be inspected via JMX. +# best_effort: stop using the failed disk and respond to requests based on +# remaining available sstables. This means you WILL see obsolete +# data at CL.ONE! +# ignore: ignore fatal errors and let requests fail, as in pre-1.2 Cassandra +disk_failure_policy: stop + +# policy for commit disk failures: +# stop: shut down gossip and Thrift, leaving the node effectively dead, but +# can still be inspected via JMX. +# stop_commit: shutdown the commit log, letting writes collect but +# continuing to service reads, as in pre-2.0.5 Cassandra +# ignore: ignore fatal errors and let the batches fail +commit_failure_policy: stop + +# Maximum size of the key cache in memory. +# +# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the +# minimum, sometimes more. The key cache is fairly tiny for the amount of +# time it saves, so it's worthwhile to use it at large numbers. +# The row cache saves even more time, but must contain the entire row, +# so it is extremely space-intensive. It's best to only use the +# row cache if you have hot rows or static rows. +# +# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. +# +# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. +key_cache_size_in_mb: + +# Duration in seconds after which Cassandra should +# save the key cache. Caches are saved to saved_caches_directory as +# specified in this configuration file. +# +# Saved caches greatly improve cold-start speeds, and is relatively cheap in +# terms of I/O for the key cache. Row cache saving is much more expensive and +# has limited use. +# +# Default is 14400 or 4 hours. +key_cache_save_period: 14400 + +# Number of keys from the key cache to save +# Disabled by default, meaning all keys are going to be saved +# key_cache_keys_to_save: 100 + +# Maximum size of the row cache in memory. +# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. +# +# Default value is 0, to disable row caching. +row_cache_size_in_mb: 0 + +# Duration in seconds after which Cassandra should +# safe the row cache. Caches are saved to saved_caches_directory as specified +# in this configuration file. +# +# Saved caches greatly improve cold-start speeds, and is relatively cheap in +# terms of I/O for the key cache. Row cache saving is much more expensive and +# has limited use. +# +# Default is 0 to disable saving the row cache. +row_cache_save_period: 0 + +# Number of keys from the row cache to save +# Disabled by default, meaning all keys are going to be saved +# row_cache_keys_to_save: 100 + +# The off-heap memory allocator. Affects storage engine metadata as +# well as caches. Experiments show that JEMAlloc saves some memory +# than the native GCC allocator (i.e., JEMalloc is more +# fragmentation-resistant). +# +# Supported values are: NativeAllocator, JEMallocAllocator +# +# If you intend to use JEMallocAllocator you have to install JEMalloc as library and +# modify cassandra-env.sh as directed in the file. +# +# Defaults to NativeAllocator +# memory_allocator: NativeAllocator + +# saved caches +saved_caches_directory: ${driver.runDir}/saved_caches + +# commitlog_sync may be either "periodic" or "batch." +# When in batch mode, Cassandra won't ack writes until the commit log +# has been fsynced to disk. It will wait up to +# commitlog_sync_batch_window_in_ms milliseconds for other writes, before +# performing the sync. +# +# commitlog_sync: batch +# commitlog_sync_batch_window_in_ms: 50 +# +# the other option is "periodic" where writes may be acked immediately +# and the CommitLog is simply synced every commitlog_sync_period_in_ms +# milliseconds. By default this allows 1024*(CPU cores) pending +# entries on the commitlog queue. If you are writing very large blobs, +# you should reduce that; 16*cores works reasonably well for 1MB blobs. +# It should be at least as large as the concurrent_writes setting. +commitlog_sync: periodic +commitlog_sync_period_in_ms: 10000 +# commitlog_periodic_queue_size: + +# The size of the individual commitlog file segments. A commitlog +# segment may be archived, deleted, or recycled once all the data +# in it (potentially from each columnfamily in the system) has been +# flushed to sstables. +# +# The default size is 32, which is almost always fine, but if you are +# archiving commitlog segments (see commitlog_archiving.properties), +# then you probably want a finer granularity of archiving; 8 or 16 MB +# is reasonable. +commitlog_segment_size_in_mb: 32 + +# any class that implements the SeedProvider interface and has a +# constructor that takes a Map<String, String> of parameters will do. +seed_provider: + # Addresses of hosts that are deemed contact points. + # Cassandra nodes use this list of hosts to find each other and learn + # the topology of the ring. You must change this if you are running + # multiple nodes! + - class_name: org.apache.cassandra.locator.SimpleSeedProvider + parameters: + # seeds is actually a comma-delimited list of addresses. + # Ex: "<ip1>,<ip2>,<ip3>" + - seeds: "${entity.seeds}" + +# For workloads with more data than can fit in memory, Cassandra's +# bottleneck will be reads that need to fetch data from +# disk. "concurrent_reads" should be set to (16 * number_of_drives) in +# order to allow the operations to enqueue low enough in the stack +# that the OS and drives can reorder them. +# +# On the other hand, since writes are almost never IO bound, the ideal +# number of "concurrent_writes" is dependent on the number of cores in +# your system; (8 * number_of_cores) is a good rule of thumb. +concurrent_reads: 32 +concurrent_writes: 32 + +# Total memory to use for sstable-reading buffers. Defaults to +# the smaller of 1/4 of heap or 512MB. +# file_cache_size_in_mb: 512 + +# Total memory to use for memtables. Cassandra will flush the largest +# memtable when this much memory is used. +# If omitted, Cassandra will set it to 1/4 of the heap. +# memtable_total_space_in_mb: 2048 + +# Total space to use for commitlogs. Since commitlog segments are +# mmapped, and hence use up address space, the default size is 32 +# on 32-bit JVMs, and 1024 on 64-bit JVMs. +# +# If space gets above this value (it will round up to the next nearest +# segment multiple), Cassandra will flush every dirty CF in the oldest +# segment and remove it. So a small total commitlog space will tend +# to cause more flush activity on less-active columnfamilies. +# commitlog_total_space_in_mb: 4096 + +# This sets the amount of memtable flush writer threads. These will +# be blocked by disk io, and each one will hold a memtable in memory +# while blocked. If you have a large heap and many data directories, +# you can increase this value for better flush performance. +# By default this will be set to the amount of data directories defined. +#memtable_flush_writers: 1 + +# the number of full memtables to allow pending flush, that is, +# waiting for a writer thread. At a minimum, this should be set to +# the maximum number of secondary indexes created on a single CF. +memtable_flush_queue_size: 4 + +# Whether to, when doing sequential writing, fsync() at intervals in +# order to force the operating system to flush the dirty +# buffers. Enable this to avoid sudden dirty buffer flushing from +# impacting read latencies. Almost always a good idea on SSDs; not +# necessarily on platters. +trickle_fsync: false +trickle_fsync_interval_in_kb: 10240 + +# TCP port, for commands and data +storage_port: ${entity.gossipPort?c} + +# SSL port, for encrypted communication. Unused unless enabled in +# encryption_options +ssl_storage_port: ${entity.sslGossipPort?c} + +# Address to bind to and tell other Cassandra nodes to connect to. You +# _must_ change this if you want multiple nodes to be able to +# communicate! +# +# Leaving it blank leaves it up to InetAddress.getLocalHost(). This +# will always do the Right Thing _if_ the node is properly configured +# (hostname, name resolution, etc), and the Right Thing is to use the +# address associated with the hostname (it might not be). +# +# Setting this to 0.0.0.0 is always wrong. +listen_address: ${entity.listenAddress} + +# Address to broadcast to other Cassandra nodes +# Leaving this blank will set it to the same value as listen_address +broadcast_address: ${entity.broadcastAddress} + +# Internode authentication backend, implementing IInternodeAuthenticator; +# used to allow/disallow connections from peer nodes. +# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator + +# Whether to start the native transport server. +# Please note that the address on which the native transport is bound is the +# same as the rpc_address. The port however is different and specified below. +start_native_transport: true +# port for the CQL native transport to listen for clients on +native_transport_port: ${entity.nativeTransportPort?c} +# The maximum threads for handling requests when the native transport is used. +# This is similar to rpc_max_threads though the default differs slightly (and +# there is no native_transport_min_threads, idle threads will always be stopped +# after 30 seconds). +# native_transport_max_threads: 128 +# +# The maximum size of allowed frame. Frame (requests) larger than this will +# be rejected as invalid. The default is 256MB. +# native_transport_max_frame_size_in_mb: 256 + +# Whether to start the thrift rpc server. +start_rpc: true + +# The address to bind the Thrift RPC service and native transport +# server -- clients connect here. +# +# Leaving this blank has the same effect it does for ListenAddress, +# (i.e. it will be based on the configured hostname of the node). +# +# Note that unlike ListenAddress above, it is allowed to specify 0.0.0.0 +# here if you want to listen on all interfaces, but that will break clients +# that rely on node auto-discovery. +rpc_address: ${entity.rpcAddress} +# port for Thrift to listen for clients on +rpc_port: ${entity.thriftPort?c} + +# enable or disable keepalive on rpc connections +rpc_keepalive: true + +# Cassandra provides two out-of-the-box options for the RPC Server: +# +# sync -> One thread per thrift connection. For a very large number of clients, memory +# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size +# per thread, and that will correspond to your use of virtual memory (but physical memory +# may be limited depending on use of stack space). +# +# hsha -> Stands for "half synchronous, half asynchronous." All thrift clients are handled +# asynchronously using a small number of threads that does not vary with the amount +# of thrift clients (and thus scales well to many clients). The rpc requests are still +# synchronous (one thread per active request). +# +# The default is sync because on Windows hsha is about 30% slower. On Linux, +# sync/hsha performance is about the same, with hsha of course using less memory. +# +# Alternatively, can provide your own RPC server by providing the fully-qualified class name +# of an o.a.c.t.TServerFactory that can create an instance of it. +rpc_server_type: sync + +# Uncomment rpc_min|max_thread to set request pool size limits. +# +# Regardless of your choice of RPC server (see above), the number of maximum requests in the +# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync +# RPC server, it also dictates the number of clients that can be connected at all). +# +# The default is unlimited and thus provides no protection against clients overwhelming the server. You are +# encouraged to set a maximum that makes sense for you in production, but do keep in mind that +# rpc_max_threads represents the maximum number of client requests this server may execute concurrently. +# +# rpc_min_threads: 16 +# rpc_max_threads: 2048 + +# uncomment to set socket buffer sizes on rpc connections +# rpc_send_buff_size_in_bytes: +# rpc_recv_buff_size_in_bytes: + +# Uncomment to set socket buffer size for internode communication +# Note that when setting this, the buffer size is limited by net.core.wmem_max +# and when not setting it it is defined by net.ipv4.tcp_wmem +# See: +# /proc/sys/net/core/wmem_max +# /proc/sys/net/core/rmem_max +# /proc/sys/net/ipv4/tcp_wmem +# /proc/sys/net/ipv4/tcp_wmem +# and: man tcp +# internode_send_buff_size_in_bytes: +# internode_recv_buff_size_in_bytes: + +# Frame size for thrift (maximum message length). +thrift_framed_transport_size_in_mb: 15 + +# Set to true to have Cassandra create a hard link to each sstable +# flushed or streamed locally in a backups/ subdirectory of the +# keyspace data. Removing these links is the operator's +# responsibility. +incremental_backups: false + +# Whether or not to take a snapshot before each compaction. Be +# careful using this option, since Cassandra won't clean up the +# snapshots for you. Mostly useful if you're paranoid when there +# is a data format change. +snapshot_before_compaction: false + +# Whether or not a snapshot is taken of the data before keyspace truncation +# or dropping of column families. The STRONGLY advised default of true +# should be used to provide data safety. If you set this flag to false, you will +# lose data on truncation or drop. +auto_snapshot: true + +# When executing a scan, within or across a partition, we need to keep the +# tombstones seen in memory so we can return them to the coordinator, which +# will use them to make sure other replicas also know about the deleted rows. +# With workloads that generate a lot of tombstones, this can cause performance +# problems and even exaust the server heap. +# (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) +# Adjust the thresholds here if you understand the dangers and want to +# scan more tombstones anyway. These thresholds may also be adjusted at runtime +# using the StorageService mbean. +tombstone_warn_threshold: 1000 +tombstone_failure_threshold: 100000 + +# Add column indexes to a row after its contents reach this size. +# Increase if your column values are large, or if you have a very large +# number of columns. The competing causes are, Cassandra has to +# deserialize this much of the row to read a single column, so you want +# it to be small - at least if you do many partial-row reads - but all +# the index data is read for each access, so you don't want to generate +# that wastefully either. +column_index_size_in_kb: 64 + + +# Log WARN on any batch size exceeding this value. 5kb per batch by default. +# Caution should be taken on increasing the size of this threshold as it can lead to node instability. +batch_size_warn_threshold_in_kb: 5 + +# Size limit for rows being compacted in memory. Larger rows will spill +# over to disk and use a slower two-pass compaction process. A message +# will be logged specifying the row key. +in_memory_compaction_limit_in_mb: 64 + +# Number of simultaneous compactions to allow, NOT including +# validation "compactions" for anti-entropy repair. Simultaneous +# compactions can help preserve read performance in a mixed read/write +# workload, by mitigating the tendency of small sstables to accumulate +# during a single long running compactions. The default is usually +# fine and if you experience problems with compaction running too +# slowly or too fast, you should look at +# compaction_throughput_mb_per_sec first. +# +# concurrent_compactors defaults to the number of cores. +# Uncomment to make compaction mono-threaded, the pre-0.8 default. +#concurrent_compactors: 1 + +# Multi-threaded compaction. When enabled, each compaction will use +# up to one thread per core, plus one thread per sstable being merged. +# This is usually only useful for SSD-based hardware: otherwise, +# your concern is usually to get compaction to do LESS i/o (see: +# compaction_throughput_mb_per_sec), not more. +multithreaded_compaction: false + +# Throttles compaction to the given total throughput across the entire +# system. The faster you insert data, the faster you need to compact in +# order to keep the sstable count down, but in general, setting this to +# 16 to 32 times the rate you are inserting data is more than sufficient. +# Setting this to 0 disables throttling. Note that this account for all types +# of compaction, including validation compaction. +compaction_throughput_mb_per_sec: 16 + +# Track cached row keys during compaction, and re-cache their new +# positions in the compacted sstable. Disable if you use really large +# key caches. +compaction_preheat_key_cache: true + +# Throttles all outbound streaming file transfers on this node to the +# given total throughput in Mbps. This is necessary because Cassandra does +# mostly sequential IO when streaming data during bootstrap or repair, which +# can lead to saturating the network connection and degrading rpc performance. +# When unset, the default is 200 Mbps or 25 MB/s. +# stream_throughput_outbound_megabits_per_sec: 200 + +# How long the coordinator should wait for read operations to complete +read_request_timeout_in_ms: 5000 +# How long the coordinator should wait for seq or index scans to complete +range_request_timeout_in_ms: 10000 +# How long the coordinator should wait for writes to complete +write_request_timeout_in_ms: 2000 +# How long a coordinator should continue to retry a CAS operation +# that contends with other proposals for the same row +cas_contention_timeout_in_ms: 1000 +# How long the coordinator should wait for truncates to complete +# (This can be much longer, because unless auto_snapshot is disabled +# we need to flush first so we can snapshot before removing the data.) +truncate_request_timeout_in_ms: 60000 +# The default timeout for other, miscellaneous operations +request_timeout_in_ms: 10000 + +# Enable operation timeout information exchange between nodes to accurately +# measure request timeouts. If disabled, replicas will assume that requests +# were forwarded to them instantly by the coordinator, which means that +# under overload conditions we will waste that much extra time processing +# already-timed-out requests. +# +# Warning: before enabling this property make sure to ntp is installed +# and the times are synchronized between the nodes. +cross_node_timeout: false + +# Enable socket timeout for streaming operation. +# When a timeout occurs during streaming, streaming is retried from the start +# of the current file. This _can_ involve re-streaming an important amount of +# data, so you should avoid setting the value too low. +# Default value is 0, which never timeout streams. +# streaming_socket_timeout_in_ms: 0 + +# phi value that must be reached for a host to be marked down. +# most users should never need to adjust this. +# phi_convict_threshold: 8 + +# endpoint_snitch -- Set this to a class that implements +# IEndpointSnitch. The snitch has two functions: +# - it teaches Cassandra enough about your network topology to route +# requests efficiently +# - it allows Cassandra to spread replicas around your cluster to avoid +# correlated failures. It does this by grouping machines into +# "datacenters" and "racks." Cassandra will do its best not to have +# more than one replica on the same "rack" (which may not actually +# be a physical location) +# +# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER, +# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS +# ARE PLACED. +# +# Out of the box, Cassandra provides +# - SimpleSnitch: +# Treats Strategy order as proximity. This can improve cache +# locality when disabling read repair. Only appropriate for +# single-datacenter deployments. +# - GossipingPropertyFileSnitch +# This should be your go-to snitch for production use. The rack +# and datacenter for the local node are defined in +# cassandra-rackdc.properties and propagated to other nodes via +# gossip. If cassandra-topology.properties exists, it is used as a +# fallback, allowing migration from the PropertyFileSnitch. +# - PropertyFileSnitch: +# Proximity is determined by rack and data center, which are +# explicitly configured in cassandra-topology.properties. +# - Ec2Snitch: +# Appropriate for EC2 deployments in a single Region. Loads Region +# and Availability Zone information from the EC2 API. The Region is +# treated as the datacenter, and the Availability Zone as the rack. +# Only private IPs are used, so this will not work across multiple +# Regions. +# - Ec2MultiRegionSnitch: +# Uses public IPs as broadcast_address to allow cross-region +# connectivity. (Thus, you should set seed addresses to the public +# IP as well.) You will need to open the storage_port or +# ssl_storage_port on the public IP firewall. (For intra-Region +# traffic, Cassandra will switch to the private IP after +# establishing a connection.) +# - RackInferringSnitch: +# Proximity is determined by rack and data center, which are +# assumed to correspond to the 3rd and 2nd octet of each node's IP +# address, respectively. Unless this happens to match your +# deployment conventions, this is best used as an example of +# writing a custom Snitch class and is provided in that spirit. +# +# You can use a custom Snitch by setting this to the full class name +# of the snitch, which will be assumed to be on your classpath. +endpoint_snitch: ${driver.endpointSnitchName} + +# controls how often to perform the more expensive part of host score +# calculation +dynamic_snitch_update_interval_in_ms: 100 +# controls how often to reset all host scores, allowing a bad host to +# possibly recover +dynamic_snitch_reset_interval_in_ms: 600000 +# if set greater than zero and read_repair_chance is < 1.0, this will allow +# 'pinning' of replicas to hosts in order to increase cache capacity. +# The badness threshold will control how much worse the pinned host has to be +# before the dynamic snitch will prefer other replicas over it. This is +# expressed as a double which represents a percentage. Thus, a value of +# 0.2 means Cassandra would continue to prefer the static snitch values +# until the pinned host was 20% worse than the fastest. +dynamic_snitch_badness_threshold: 0.1 + +# request_scheduler -- Set this to a class that implements +# RequestScheduler, which will schedule incoming client requests +# according to the specific policy. This is useful for multi-tenancy +# with a single Cassandra cluster. +# NOTE: This is specifically for requests from the client and does +# not affect inter node communication. +# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place +# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of +# client requests to a node with a separate queue for each +# request_scheduler_id. The scheduler is further customized by +# request_scheduler_options as described below. +request_scheduler: org.apache.cassandra.scheduler.NoScheduler + +# Scheduler Options vary based on the type of scheduler +# NoScheduler - Has no options +# RoundRobin +# - throttle_limit -- The throttle_limit is the number of in-flight +# requests per client. Requests beyond +# that limit are queued up until +# running requests can complete. +# The value of 80 here is twice the number of +# concurrent_reads + concurrent_writes. +# - default_weight -- default_weight is optional and allows for +# overriding the default which is 1. +# - weights -- Weights are optional and will default to 1 or the +# overridden default_weight. The weight translates into how +# many requests are handled during each turn of the +# RoundRobin, based on the scheduler id. +# +# request_scheduler_options: +# throttle_limit: 80 +# default_weight: 5 +# weights: +# Keyspace1: 1 +# Keyspace2: 5 + +# request_scheduler_id -- An identifier based on which to perform +# the request scheduling. Currently the only valid option is keyspace. +# request_scheduler_id: keyspace + +# Enable or disable inter-node encryption +# Default settings are TLS v1, RSA 1024-bit keys (it is imperative that +# users generate their own keys) TLS_RSA_WITH_AES_128_CBC_SHA as the cipher +# suite for authentication, key exchange and encryption of the actual data transfers. +# Use the DHE/ECDHE ciphers if running in FIPS 140 compliant mode. +# NOTE: No custom encryption options are enabled at the moment +# The available internode options are : all, none, dc, rack +# +# If set to dc cassandra will encrypt the traffic between the DCs +# If set to rack cassandra will encrypt the traffic between the racks +# +# The passwords used in these options must match the passwords used when generating +# the keystore and truststore. For instructions on generating these files, see: +# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore +# +server_encryption_options: + internode_encryption: none + keystore: conf/.keystore + keystore_password: cassandra + truststore: conf/.truststore + truststore_password: cassandra + # More advanced defaults below: + # protocol: TLS + # algorithm: SunX509 + # store_type: JKS + # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] + # require_client_auth: false + +# enable or disable client/server encryption. +client_encryption_options: + enabled: false + keystore: conf/.keystore + keystore_password: cassandra + # require_client_auth: false + # Set trustore and truststore_password if require_client_auth is true + # truststore: conf/.truststore + # truststore_password: cassandra + # More advanced defaults below: + # protocol: TLS + # algorithm: SunX509 + # store_type: JKS + # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] + +# internode_compression controls whether traffic between nodes is +# compressed. +# can be: all - all traffic is compressed +# dc - traffic between different datacenters is compressed +# none - nothing is compressed. +internode_compression: all + +# Enable or disable tcp_nodelay for inter-dc communication. +# Disabling it will result in larger (but fewer) network packets being sent, +# reducing overhead from the TCP protocol itself, at the cost of increasing +# latency if you block for cross-datacenter responses. +inter_dc_tcp_nodelay: false + +# Enable or disable kernel page cache preheating from contents of the key cache after compaction. +# When enabled it would preheat only first "page" (4KB) of each row to optimize +# for sequential access. Note: This could be harmful for fat rows, see CASSANDRA-4937 +# for further details on that topic. +preheat_kernel_page_cache: false
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar new file mode 100644 index 0000000..b1c1b94 Binary files /dev/null and b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar differ http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt new file mode 100644 index 0000000..205b18d --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt @@ -0,0 +1,33 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +The file cassandra-multicloud-snitch.jar is a snitch implementation +that handles Cassandra datacenters in different cloud providers. + +The source code for cassandra-multicloud-snitch.jar is in sandbox/cassandra-multicloud-snitch. + +The source will be contributed to the Cassandra project; when it is available in the +Cassandra distro (and when we don't want to give backwards compatibility support for +older Cassandra versions), then we can delete it from Brooklyn. + +The jar can be uploaded to a Cassandra Node as part of deployment, for if +this multi-cloud snitch is desired. + +Under Apache conventions, binary files are not part of the source +release. If you are using the source release, you may add this file +by copying it from the master repository, which is accessible on the +web at https://github.com/apache/incubator-brooklyn http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties new file mode 100644 index 0000000..8fc323a --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties @@ -0,0 +1,6 @@ +# See http://www.datastax.com/docs/1.1/cluster_architecture/replication +# Note publicip/privateip added for use by custom MultiCloudSnitch +dc=${entity.datacenterName} +rack=${entity.rackName} +publicip=${entity.publicIp} +privateip=${entity.privateIp} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml new file mode 100644 index 0000000..01f4027 --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml @@ -0,0 +1,77 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +services: +- type: brooklyn.entity.basic.VanillaSoftwareProcess + name: CBC Pillowfight + launch.command: | + sudo wget -O/etc/apt/sources.list.d/couchbase.list http://packages.couchbase.com/ubuntu/couchbase-ubuntu1204.list + sudo wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | sudo apt-key add - + sudo apt-get update + sudo apt-get install -y libcouchbase2-libevent libcouchbase-dev libcouchbase2-bin + provisioning.properties: + # CentOS requires a different launch command, see below + osFamily: ubuntu + checkRunning.command: "" + stop.command: "" + + brooklyn.config: + base_url: http://127.0.0.1:8091/ + + brooklyn.initializers: + - type: brooklyn.entity.software.ssh.SshCommandEffector + brooklyn.config: + name: pillow_fight + description: runs cbc pillowfight + command: | + cbc-pillowfight -U ${base_url}${bucket} \ + `if [ -n "$username" ]; then echo -u $username; fi` \ + `if [ -n "$password" ]; then echo -P $password; fi` \ + `if [ -n "$num_cycles" ]; then echo -c $num_cycles; fi` \ + `if [ -n "$min_size" ]; then echo -m $min_size; fi` \ + `if [ -n "$max_size" ]; then echo -M $max_size; fi` \ + `if [ -n "$ratio" ]; then echo -r $ratio; fi` + parameters: + base_url: + description: base URL (http or couchbases) and list of hosts/port to connect to, including trailing slash + defaultValue: $brooklyn:config("base_url") + bucket: + description: bucket to use + defaultValue: default + username: + description: username to authenticate to the bucket + password: + description: password to authenticate to the bucket + num_cycles: + description: number of iterations to run + defaultValue: 1 + min_size: + description: minimum payload size + defaultValue: 50 + max_size: + description: maximum payload size + defaultValue: 5120 + ratio: + description: "specify SET/GET command ratio (default: 33, i.e. 33% SETs and 67% GETs)" + defaultValue: 33 + +# For CentOS, use the following launch command: +# launch.command: | +# sudo wget -O/etc/yum.repos.d/couchbase.repo http://packages.couchbase.com/rpm/couchbase-centos55-x86_64.repo +# sudo yum check-update +# sudo yum install -y libcouchbase2-libevent libcouchbase-devel libcouchbase2-bin http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini new file mode 100644 index 0000000..692fc8b --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini @@ -0,0 +1,17 @@ +[#ftl] +# +[couchdb] +database_dir = ${driver.runDir} +view_index_dir = ${driver.runDir} +uri_file = ${driver.runDir}/couch.uri + +[httpd] +port = ${entity.httpPort?c} +bind_address = 0.0.0.0 + +[ssl] +port = ${entity.httpsPort?c} + +[log] +file = ${driver.runDir}/couch.log +level = info \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri new file mode 100644 index 0000000..0997fc7 --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri @@ -0,0 +1,2 @@ +[#ftl] +http://${driver.hostname}:${entity.httpPort?c}/ \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf new file mode 100644 index 0000000..e7f02fd --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf @@ -0,0 +1,7 @@ +# Default configuration for a mongod process. The use of noprealloc and smallfiles +# mean this configuration file should not be used in a production environment. + +quiet = false + +noprealloc = true +smallfiles = true http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf new file mode 100644 index 0000000..c3c279f --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf @@ -0,0 +1,2 @@ +# Default Brooklyn configuration for a MongoDB process. +quiet = false http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf new file mode 100644 index 0000000..0554eb2 --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf @@ -0,0 +1,13 @@ +# Redis configuration file + +# Start as daemon +daemonize yes +pidfile ${driver.runDir}/pid.txt + +# Set port and optional bind address +port ${entity.redisPort?c} +# bind ${entity.address} + +# Configure logging +loglevel verbose +logfile ${driver.runDir}/redis.log http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf new file mode 100644 index 0000000..3a9e64a --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf @@ -0,0 +1,16 @@ +# Redis configuration file + +# Start as daemon +daemonize yes +pidfile ${driver.runDir}/pid.txt + +# Set port and optional bind address +port ${entity.redisPort?c} +# bind ${entity.address} + +# Slave configuration +slaveof ${entity.master.address} ${entity.master.redisPort?c} + +# Configure logging +loglevel verbose +logfile ${driver.runDir}/redis.log http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config new file mode 100644 index 0000000..7ee8a37 --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config @@ -0,0 +1,353 @@ +%% Brooklyn note: file from 1.4.8 Mac install, with erlang section added, and ports templated + +%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ft=erlang ts=4 sw=4 et +[ + %% Riak Client APIs config + {riak_api, [ + %% pb_backlog is the maximum length to which the queue of pending + %% connections may grow. If set, it must be an integer >= 0. + %% By default the value is 5. If you anticipate a huge number of + %% connections being initialised *simultaneously*, set this number + %% higher. + %% {pb_backlog, 64}, + + %% pb is a list of IP addresses and TCP ports that the Riak + %% Protocol Buffers interface will bind. + {pb, [ {"0.0.0.0", ${entity.riakPbPort?c} } ]} + ]}, + + %% Riak Core config + {riak_core, [ + %% Default location of ringstate + {ring_state_dir, "./data/ring"}, + + %% Default ring creation size. Make sure it is a power of 2, + %% e.g. 16, 32, 64, 128, 256, 512 etc + %{ring_creation_size, 64}, + + %% http is a list of IP addresses and TCP ports that the Riak + %% HTTP interface will bind. + {http, [ {"0.0.0.0", ${entity.riakWebPort?c} } ]}, + + %% https is a list of IP addresses and TCP ports that the Riak + %% HTTPS interface will bind. + %{https, [{ "0.0.0.0", ${entity.riakWebPort?c} }]}, + + %% Default cert and key locations for https can be overridden + %% with the ssl config variable, for example: + %{ssl, [ + % {certfile, "./etc/cert.pem"}, + % {keyfile, "./etc/key.pem"} + % ]}, + + %% riak_handoff_port is the TCP port that Riak uses for + %% intra-cluster data handoff. + {handoff_port, ${entity.handoffListenerPort?c} }, + + %% To encrypt riak_core intra-cluster data handoff traffic, + %% uncomment the following line and edit its path to an + %% appropriate certfile and keyfile. (This example uses a + %% single file with both items concatenated together.) + %{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, + + %% DTrace support + %% Do not enable 'dtrace_support' unless your Erlang/OTP + %% runtime is compiled to support DTrace. DTrace is + %% available in R15B01 (supported by the Erlang/OTP + %% official source package) and in R14B04 via a custom + %% source repository & branch. + {dtrace_support, false}, + + %% Health Checks + %% If disabled, health checks registered by an application will + %% be ignored. NOTE: this option cannot be changed at runtime. + %% To re-enable, the setting must be changed and the node restarted. + %% NOTE: As of Riak 1.3.2, health checks are deprecated as they + %% may interfere with the new overload protection mechanisms. + %% If there is a good reason to re-enable them, you must uncomment + %% this line and also add an entry in the riak_kv section: + %% {riak_kv, [ ..., {enable_health_checks, true}, ...]} + %% {enable_health_checks, true}, + + %% Platform-specific installation paths (substituted by rebar) + {platform_bin_dir, "./bin"}, + {platform_data_dir, "./data"}, + {platform_etc_dir, "./etc"}, + {platform_lib_dir, "./lib"}, + {platform_log_dir, "./log"} + ]}, + + %% Riak KV config + {riak_kv, [ + %% Storage_backend specifies the Erlang module defining the storage + %% mechanism that will be used on this node. + {storage_backend, riak_kv_bitcask_backend}, + + %% raw_name is the first part of all URLS used by the Riak raw HTTP + %% interface. See riak_web.erl and raw_http_resource.erl for + %% details. + %{raw_name, "riak"}, + + %% Enable active anti-entropy subsystem + optional debug messages: + %% {anti_entropy, {on|off, []}}, + %% {anti_entropy, {on|off, [debug]}}, + {anti_entropy, {on, []}}, + + %% Restrict how fast AAE can build hash trees. Building the tree + %% for a given partition requires a full scan over that partition's + %% data. Once built, trees stay built until they are expired. + %% Config is of the form: + %% {num-builds, per-timespan-in-milliseconds} + %% Default is 1 build per hour. + {anti_entropy_build_limit, {1, 3600000}}, + + %% Determine how often hash trees are expired after being built. + %% Periodically expiring a hash tree ensures the on-disk hash tree + %% data stays consistent with the actual k/v backend data. It also + %% helps Riak identify silent disk failures and bit rot. However, + %% expiration is not needed for normal AAE operation and should be + %% infrequent for performance reasons. The time is specified in + %% milliseconds. The default is 1 week. + {anti_entropy_expire, 604800000}, + + %% Limit how many AAE exchanges/builds can happen concurrently. + {anti_entropy_concurrency, 2}, + + %% The tick determines how often the AAE manager looks for work + %% to do (building/expiring trees, triggering exchanges, etc). + %% The default is every 15 seconds. Lowering this value will + %% speedup the rate that all replicas are synced across the cluster. + %% Increasing the value is not recommended. + {anti_entropy_tick, 15000}, + + %% The directory where AAE hash trees are stored. + {anti_entropy_data_dir, "./data/anti_entropy"}, + + %% The LevelDB options used by AAE to generate the LevelDB-backed + %% on-disk hashtrees. + {anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, + {max_open_files, 20}]}, + + %% mapred_name is URL used to submit map/reduce requests to Riak. + {mapred_name, "mapred"}, + + %% mapred_2i_pipe indicates whether secondary-index + %% MapReduce inputs are queued in parallel via their own + %% pipe ('true'), or serially via a helper process + %% ('false' or undefined). Set to 'false' or leave + %% undefined during a rolling upgrade from 1.0. + {mapred_2i_pipe, true}, + + %% Each of the following entries control how many Javascript + %% virtual machines are available for executing map, reduce, + %% pre- and post-commit hook functions. + {map_js_vm_count, 8 }, + {reduce_js_vm_count, 6 }, + {hook_js_vm_count, 2 }, + + %% js_max_vm_mem is the maximum amount of memory, in megabytes, + %% allocated to the Javascript VMs. If unset, the default is + %% 8MB. + {js_max_vm_mem, 8}, + + %% js_thread_stack is the maximum amount of thread stack, in megabyes, + %% allocate to the Javascript VMs. If unset, the default is 16MB. + %% NOTE: This is not the same as the C thread stack. + {js_thread_stack, 16}, + + %% js_source_dir should point to a directory containing Javascript + %% source files which will be loaded by Riak when it initializes + %% Javascript VMs. + %{js_source_dir, "/tmp/js_source"}, + + %% http_url_encoding determines how Riak treats URL encoded + %% buckets, keys, and links over the REST API. When set to 'on' + %% Riak always decodes encoded values sent as URLs and Headers. + %% Otherwise, Riak defaults to compatibility mode where links + %% are decoded, but buckets and keys are not. The compatibility + %% mode will be removed in a future release. + {http_url_encoding, on}, + + %% Switch to vnode-based vclocks rather than client ids. This + %% significantly reduces the number of vclock entries. + %% Only set true if *all* nodes in the cluster are upgraded to 1.0 + {vnode_vclocks, true}, + + %% This option toggles compatibility of keylisting with 1.0 + %% and earlier versions. Once a rolling upgrade to a version + %% > 1.0 is completed for a cluster, this should be set to + %% true for better control of memory usage during key listing + %% operations + {listkeys_backpressure, true}, + + %% This option specifies how many of each type of fsm may exist + %% concurrently. This is for overload protection and is a new + %% mechanism that obsoletes 1.3's health checks. Note that this number + %% represents two potential processes, so +P in vm.args should be at + %% least 3X the fsm_limit. + {fsm_limit, 50000}, + + %% Uncomment to make non-paginated results be sorted the + %% same way paginated results are: by term, then key. + %% In Riak 1.4.* before 1.4.4, all results were sorted this way + %% by default, which can adversely affect performance in some cases. + %% Setting this to true emulates that behavior. + %% {secondary_index_sort_default, true}, + + %% object_format controls which binary representation of a riak_object + %% is stored on disk. + %% Current options are: v0, v1. + %% v0: Original erlang:term_to_binary format. Higher space overhead. + %% v1: New format for more compact storage of small values. + {object_format, v1} + ]}, + + %% Riak Search Config + {riak_search, [ + %% To enable Search functionality set this 'true'. + {enabled, false} + ]}, + + %% Merge Index Config + {merge_index, [ + %% The root dir to store search merge_index data + {data_root, "./data/merge_index"}, + + %% Size, in bytes, of the in-memory buffer. When this + %% threshold has been reached the data is transformed + %% into a segment file which resides on disk. + {buffer_rollover_size, 1048576}, + + %% Overtime the segment files need to be compacted. + %% This is the maximum number of segments that will be + %% compacted at once. A lower value will lead to + %% quicker but more frequent compactions. + {max_compact_segments, 20} + ]}, + + %% Bitcask Config + {bitcask, [ + %% Configure how Bitcask writes data to disk. + %% erlang: Erlang's built-in file API + %% nif: Direct calls to the POSIX C API + %% + %% The NIF mode provides higher throughput for certain + %% workloads, but has the potential to negatively impact + %% the Erlang VM, leading to higher worst-case latencies + %% and possible throughput collapse. + {io_mode, erlang}, + + {data_root, "./data/bitcask"} + ]}, + + %% eLevelDB Config + {eleveldb, [ + {data_root, "./data/leveldb"} + ]}, + + %% Lager Config + {lager, [ + %% What handlers to install with what arguments + %% The defaults for the logfiles are to rotate the files when + %% they reach 10Mb or at midnight, whichever comes first, and keep + %% the last 5 rotations. See the lager README for a description of + %% the time rotation format: + %% https://github.com/basho/lager/blob/master/README.org + %% + %% If you wish to disable rotation, you can either set the size to 0 + %% and the rotation time to "", or instead specify a 2-tuple that only + %% consists of {Logfile, Level}. + %% + %% If you wish to have riak log messages to syslog, you can use a handler + %% like this: + %% {lager_syslog_backend, ["riak", daemon, info]}, + %% + {handlers, [ + {lager_file_backend, [ + {"./log/error.log", error, 10485760, "$D0", 5}, + {"./log/console.log", info, 10485760, "$D0", 5} + ]} + ] }, + + %% Whether to write a crash log, and where. + %% Commented/omitted/undefined means no crash logger. + {crash_log, "./log/crash.log"}, + + %% Maximum size in bytes of events in the crash log - defaults to 65536 + {crash_log_msg_size, 65536}, + + %% Maximum size of the crash log in bytes, before its rotated, set + %% to 0 to disable rotation - default is 0 + {crash_log_size, 10485760}, + + %% What time to rotate the crash log - default is no time + %% rotation. See the lager README for a description of this format: + %% https://github.com/basho/lager/blob/master/README.org + {crash_log_date, "$D0"}, + + %% Number of rotated crash logs to keep, 0 means keep only the + %% current one - default is 0 + {crash_log_count, 5}, + + %% Whether to redirect error_logger messages into lager - defaults to true + {error_logger_redirect, true}, + + %% maximum number of error_logger messages to handle in a second + %% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup + {error_logger_hwm, 100} + ]}, + + %% riak_sysmon config + {riak_sysmon, [ + %% To disable forwarding events of a particular type, use a + %% limit of 0. + {process_limit, 30}, + {port_limit, 2}, + + %% Finding reasonable limits for a given workload is a matter + %% of experimentation. + %% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) + %% can cause performance problems on multi-CPU systems. + {gc_ms_limit, 0}, + {heap_word_limit, 40111000}, + + %% Configure the following items to 'false' to disable logging + %% of that event type. + {busy_port, true}, + {busy_dist_port, true} + ]}, + + %% SASL config + {sasl, [ + {sasl_error_logger, false} + ]}, + + %% riak_control config + {riak_control, [ + %% Set to false to disable the admin panel. + {enabled, true}, + + %% Authentication style used for access to the admin + %% panel. Valid styles are 'userlist' <TODO>. + {auth, userlist}, + + %% If auth is set to 'userlist' then this is the + %% list of usernames and passwords for access to the + %% admin panel. + {userlist, [{"user", "pass"} + ]}, + + %% The admin panel is broken up into multiple + %% components, each of which is enabled or disabled + %% by one of these settings. + {admin, true} + ]}, + + %% erlang, constrain port range so we can open the internal firewall ports + { kernel, [ + {inet_dist_listen_min, ${entity.erlangPortRangeStart?c}}, + {inet_dist_listen_max, ${entity.erlangPortRangeEnd?c}} + ]} + +]. http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml new file mode 100644 index 0000000..0d1e7c7 --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml @@ -0,0 +1,35 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Cluster Riak & Solr +location: + jclouds:aws-ec2:us-east-1: + osFamily: centos + osVersionRegex: 6\..* +services: +- type: org.apache.brooklyn.entity.nosql.riak.RiakCluster + initialSize: 2 + memberSpec: + $brooklyn:entitySpec: + type: org.apache.brooklyn.entity.nosql.riak.RiakNode + searchEnabled: true + brooklyn.config: + provisioning.properties: + minCores: 2 + minRam: 6gb \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf new file mode 100644 index 0000000..d123000 --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf @@ -0,0 +1,494 @@ +## Brooklyn note: file from 2.0.1 Mac install, with erlang section added, and ports templated + +## Where to emit the default log messages (typically at 'info' +## severity): +## off: disabled +## file: the file specified by log.console.file +## console: to standard output (seen when using `riak attach-direct`) +## both: log.console.file and standard out. +## +## Default: file +## +## Acceptable values: +## - one of: off, file, console, both +log.console = file + +## The severity level of the console log, default is 'info'. +## +## Default: info +## +## Acceptable values: +## - one of: debug, info, notice, warning, error, critical, alert, emergency, none +log.console.level = info + +## When 'log.console' is set to 'file' or 'both', the file where +## console messages will be logged. +## +## Default: $(platform_log_dir)/console.log +## +## Acceptable values: +## - the path to a file +log.console.file = $(platform_log_dir)/console.log + +## The file where error messages will be logged. +## +## Default: $(platform_log_dir)/error.log +## +## Acceptable values: +## - the path to a file +log.error.file = $(platform_log_dir)/error.log + +## When set to 'on', enables log output to syslog. +## +## Default: off +## +## Acceptable values: +## - on or off +log.syslog = off + +## Whether to enable the crash log. +## +## Default: on +## +## Acceptable values: +## - on or off +log.crash = on + +## If the crash log is enabled, the file where its messages will +## be written. +## +## Default: $(platform_log_dir)/crash.log +## +## Acceptable values: +## - the path to a file +log.crash.file = $(platform_log_dir)/crash.log + +## Maximum size in bytes of individual messages in the crash log +## +## Default: 64KB +## +## Acceptable values: +## - a byte size with units, e.g. 10GB +log.crash.maximum_message_size = 64KB + +## Maximum size of the crash log in bytes, before it is rotated +## +## Default: 10MB +## +## Acceptable values: +## - a byte size with units, e.g. 10GB +log.crash.size = 10MB + +## The schedule on which to rotate the crash log. For more +## information see: +## https://github.com/basho/lager/blob/master/README.md#internal-log-rotation +## +## Default: $D0 +## +## Acceptable values: +## - text +log.crash.rotation = $D0 + +## The number of rotated crash logs to keep. When set to +## 'current', only the current open log file is kept. +## +## Default: 5 +## +## Acceptable values: +## - an integer +## - the text "current" +log.crash.rotation.keep = 5 + +## Name of the Erlang node +## +## Default: [email protected] +## +## Acceptable values: +## - text +nodename = riak@${driver.hostname} + +## Cookie for distributed node communication. All nodes in the +## same cluster should use the same cookie or they will not be able to +## communicate. +## +## Default: riak +## +## Acceptable values: +## - text +distributed_cookie = riak + +## Sets the number of threads in async thread pool, valid range +## is 0-1024. If thread support is available, the default is 64. +## More information at: http://erlang.org/doc/man/erl.html +## +## Default: 64 +## +## Acceptable values: +## - an integer +erlang.async_threads = 64 + +## The number of concurrent ports/sockets +## Valid range is 1024-134217727 +## +## Default: 65536 +## +## Acceptable values: +## - an integer +erlang.max_ports = 65536 + +## Set scheduler forced wakeup interval. All run queues will be +## scanned each Interval milliseconds. While there are sleeping +## schedulers in the system, one scheduler will be woken for each +## non-empty run queue found. An Interval of zero disables this +## feature, which also is the default. +## This feature is a workaround for lengthy executing native code, and +## native code that do not bump reductions properly. +## More information: http://www.erlang.org/doc/man/erl.html#+sfwi +## +## Acceptable values: +## - an integer +## erlang.schedulers.force_wakeup_interval = 500 + +## Enable or disable scheduler compaction of load. By default +## scheduler compaction of load is enabled. When enabled, load +## balancing will strive for a load distribution which causes as many +## scheduler threads as possible to be fully loaded (i.e., not run out +## of work). This is accomplished by migrating load (e.g. runnable +## processes) into a smaller set of schedulers when schedulers +## frequently run out of work. When disabled, the frequency with which +## schedulers run out of work will not be taken into account by the +## load balancing logic. +## More information: http://www.erlang.org/doc/man/erl.html#+scl +## +## Acceptable values: +## - one of: true, false +## erlang.schedulers.compaction_of_load = false + +## Enable or disable scheduler utilization balancing of load. By +## default scheduler utilization balancing is disabled and instead +## scheduler compaction of load is enabled which will strive for a +## load distribution which causes as many scheduler threads as +## possible to be fully loaded (i.e., not run out of work). When +## scheduler utilization balancing is enabled the system will instead +## try to balance scheduler utilization between schedulers. That is, +## strive for equal scheduler utilization on all schedulers. +## More information: http://www.erlang.org/doc/man/erl.html#+sub +## +## Acceptable values: +## - one of: true, false +## erlang.schedulers.utilization_balancing = true + +## Number of partitions in the cluster (only valid when first +## creating the cluster). Must be a power of 2, minimum 8 and maximum +## 1024. +## +## Default: 64 +## +## Acceptable values: +## - an integer +## ring_size = 64 + +## Number of concurrent node-to-node transfers allowed. +## +## Default: 2 +## +## Acceptable values: +## - an integer +## transfer_limit = 2 + +## Default cert location for https can be overridden +## with the ssl config variable, for example: +## +## Acceptable values: +## - the path to a file +## ssl.certfile = $(platform_etc_dir)/cert.pem + +## Default key location for https can be overridden with the ssl +## config variable, for example: +## +## Acceptable values: +## - the path to a file +## ssl.keyfile = $(platform_etc_dir)/key.pem + +## Default signing authority location for https can be overridden +## with the ssl config variable, for example: +## +## Acceptable values: +## - the path to a file +## ssl.cacertfile = $(platform_etc_dir)/cacertfile.pem + +## DTrace support Do not enable 'dtrace' unless your Erlang/OTP +## runtime is compiled to support DTrace. DTrace is available in +## R15B01 (supported by the Erlang/OTP official source package) and in +## R14B04 via a custom source repository & branch. +## +## Default: off +## +## Acceptable values: +## - on or off +dtrace = off + +## Platform-specific installation paths (substituted by rebar) +## +## Default: ./bin +## +## Acceptable values: +## - the path to a directory +platform_bin_dir = ./bin + +## +## Default: ./data +## +## Acceptable values: +## - the path to a directory +platform_data_dir = ./data + +## +## Default: ./etc +## +## Acceptable values: +## - the path to a directory +platform_etc_dir = ./etc + +## +## Default: ./lib +## +## Acceptable values: +## - the path to a directory +platform_lib_dir = ./lib + +## +## Default: ./log +## +## Acceptable values: +## - the path to a directory +platform_log_dir = ./log + +## Enable consensus subsystem. Set to 'on' to enable the +## consensus subsystem used for strongly consistent Riak operations. +## +## Default: off +## +## Acceptable values: +## - on or off +## strong_consistency = on + +## listener.http.<name> is an IP address and TCP port that the Riak +## HTTP interface will bind. +## +## Default: 127.0.0.1:8098 +## +## Acceptable values: +## - an IP/port pair, e.g. 127.0.0.1:10011 +listener.http.internal = 0.0.0.0:${entity.riakWebPort?c} + +## listener.protobuf.<name> is an IP address and TCP port that the Riak +## Protocol Buffers interface will bind. +## +## Default: 127.0.0.1:8087 +## +## Acceptable values: +## - an IP/port pair, e.g. 127.0.0.1:10011 +listener.protobuf.internal = 0.0.0.0:${entity.riakPbPort?c} + +## The maximum length to which the queue of pending connections +## may grow. If set, it must be an integer > 0. If you anticipate a +## huge number of connections being initialized *simultaneously*, set +## this number higher. +## +## Default: 128 +## +## Acceptable values: +## - an integer +## protobuf.backlog = 128 + +## listener.https.<name> is an IP address and TCP port that the Riak +## HTTPS interface will bind. +## +## Acceptable values: +## - an IP/port pair, e.g. 127.0.0.1:10011 +## listener.https.internal = 127.0.0.1:8098 + +## How Riak will repair out-of-sync keys. Some features require +## this to be set to 'active', including search. +## * active: out-of-sync keys will be repaired in the background +## * passive: out-of-sync keys are only repaired on read +## * active-debug: like active, but outputs verbose debugging +## information +## +## Default: active +## +## Acceptable values: +## - one of: active, passive, active-debug +anti_entropy = active + +## Specifies the storage engine used for Riak's key-value data +## and secondary indexes (if supported). +## +## Default: bitcask +## +## Acceptable values: +## - one of: bitcask, leveldb, memory, multi +storage_backend = bitcask + +## Controls which binary representation of a riak value is stored +## on disk. +## * 0: Original erlang:term_to_binary format. Higher space overhead. +## * 1: New format for more compact storage of small values. +## +## Default: 1 +## +## Acceptable values: +## - the integer 1 +## - the integer 0 +object.format = 1 + +## Reading or writing objects bigger than this size will write a +## warning in the logs. +## +## Default: 5MB +## +## Acceptable values: +## - a byte size with units, e.g. 10GB +object.size.warning_threshold = 5MB + +## Writing an object bigger than this will send a failure to the +## client. +## +## Default: 50MB +## +## Acceptable values: +## - a byte size with units, e.g. 10GB +object.size.maximum = 50MB + +## Writing an object with more than this number of siblings will +## generate a warning in the logs. +## +## Default: 25 +## +## Acceptable values: +## - an integer +object.siblings.warning_threshold = 25 + +## Writing an object with more than this number of siblings will +## send a failure to the client. +## +## Default: 100 +## +## Acceptable values: +## - an integer +object.siblings.maximum = 100 + +## A path under which bitcask data files will be stored. +## +## Default: $(platform_data_dir)/bitcask +## +## Acceptable values: +## - the path to a directory +bitcask.data_root = $(platform_data_dir)/bitcask + +## Configure how Bitcask writes data to disk. +## erlang: Erlang's built-in file API +## nif: Direct calls to the POSIX C API +## The NIF mode provides higher throughput for certain +## workloads, but has the potential to negatively impact +## the Erlang VM, leading to higher worst-case latencies +## and possible throughput collapse. +## +## Default: erlang +## +## Acceptable values: +## - one of: erlang, nif +bitcask.io_mode = erlang + +## Set to 'off' to disable the admin panel. +## +## Default: off +## +## Acceptable values: +## - on or off +riak_control = on + +## Authentication mode used for access to the admin panel. +## +## Default: off +## +## Acceptable values: +## - one of: off, userlist +riak_control.auth.mode = off + +## If riak control's authentication mode (riak_control.auth.mode) +## is set to 'userlist' then this is the list of usernames and +## passwords for access to the admin panel. +## To create users with given names, add entries of the format: +## riak_control.auth.user.USERNAME.password = PASSWORD +## replacing USERNAME with the desired username and PASSWORD with the +## desired password for that user. +## +## Acceptable values: +## - text +## riak_control.auth.user.admin.password = pass + +## This parameter defines the percentage of total server memory +## to assign to LevelDB. LevelDB will dynamically adjust its internal +## cache sizes to stay within this size. The memory size can +## alternately be assigned as a byte count via leveldb.maximum_memory +## instead. +## +## Default: 70 +## +## Acceptable values: +## - an integer +leveldb.maximum_memory.percent = 70 + +## To enable Search set this 'on'. +## +## Default: off +## +## Acceptable values: +## - on or off +search = off + +## How long Riak will wait for Solr to start. The start sequence +## will be tried twice. If both attempts timeout, then the Riak node +## will be shutdown. This may need to be increased as more data is +## indexed and Solr takes longer to start. Values lower than 1s will +## be rounded up to the minimum 1s. +## +## Default: 30s +## +## Acceptable values: +## - a time duration with units, e.g. '10s' for 10 seconds +search.solr.start_timeout = 30s + +## The port number which Solr binds to. +## NOTE: Binds on every interface. +## +## Default: 8093 +## +## Acceptable values: +## - an integer +search.solr.port = ${entity.searchSolrPort?c} + +## The port number which Solr JMX binds to. +## NOTE: Binds on every interface. +## +## Default: 8985 +## +## Acceptable values: +## - an integer +search.solr.jmx_port = ${entity.searchSolrJmxPort?c} + +## The options to pass to the Solr JVM. Non-standard options, +## i.e. -XX, may not be portable across JVM implementations. +## E.g. -XX:+UseCompressedStrings +## +## Default: -d64 -Xms1g -Xmx1g -XX:+UseStringCache -XX:+UseCompressedOops +## +## Acceptable values: +## - text +search.solr.jvm_options = -d64 -Xms1g -Xmx1g -XX:+UseStringCache -XX:+UseCompressedOops + +## erlang, constrain port range so we can open the internal firewall ports +erlang.distribution.port_range.minimum = ${entity.erlangPortRangeStart?c} +erlang.distribution.port_range.maximum = ${entity.erlangPortRangeEnd?c} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml new file mode 100644 index 0000000..5e184ac --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Riak Cluster with Webapp Cluster +location: jclouds:softlayer:sjc01 +services: +- type: org.apache.brooklyn.entity.nosql.riak.RiakCluster + initialSize: 2 + id: cluster + brooklyn.config: + install.version: 2.0.0 +- type: brooklyn.entity.webapp.ControlledDynamicWebAppCluster + name: Web Cluster + brooklyn.config: + initialSize: 2 + controlleddynamicwebappcluster.controllerSpec: + $brooklyn:entitySpec: + type: brooklyn.entity.proxy.nginx.NginxController + brooklyn.config: + member.sensor.hostname: "host.subnet.hostname" + wars.root: "https://s3-eu-west-1.amazonaws.com/brooklyn-clocker/brooklyn-example-hello-world-sql-webapp.war" + java.sysprops: + brooklyn.example.riak.nodes: $brooklyn:component("cluster").attributeWhenReady("riak.cluster.nodeList") + +# Alternative URL for War file if available on classpath +# "classpath://brooklyn-example-hello-world-sql-webapp.war" http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml new file mode 100644 index 0000000..d2b08ff --- /dev/null +++ b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml @@ -0,0 +1,36 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Riak Cluster with Webapp +location: aws-ec2:eu-west-1 +services: +- type: org.apache.brooklyn.entity.nosql.riak.RiakCluster + initialSize: 2 + id: cluster +- type: brooklyn.entity.webapp.jboss.JBoss7Server + name: Web + brooklyn.config: + wars.root: "https://s3-eu-west-1.amazonaws.com/brooklyn-clocker/brooklyn-example-hello-world-sql-webapp.war" + java.sysprops: + brooklyn.example.riak.nodes: $brooklyn:component("cluster").attributeWhenReady("riak.cluster.nodeList") + provisioning.properties: + osFamily: centos + +# Alternative URL for War file if available on classpath +# "classpath://brooklyn-example-hello-world-sql-webapp.war"
