Distributed Erlang systems aim to be decentralized, distributed, homogeneous, and fault tolerant. Nodes use only local data and there is no global state or reliance on physical time. Cluster membership is handled through a configuration file or gossip protocol. Load balancing uses techniques like consistent hashing. Liveness is checked through Erlang tools and custom mechanisms. Soft state through gossip protocols can provide an alternative to global state. Shipping code embedded in a runtime and upgrading through reboots helps manage distributed systems.